作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何将 HLOCAL
数据类型转换为 LPTSTR
数据类型?我正在尝试从 Microsoft 获取代码片段,这是唯一的错误,我不确定如何解决:
// Create a HDEVINFO with all present devices.
hDevInfo = SetupDiGetClassDevs(NULL,
0, // Enumerator
0,
DIGCF_PRESENT | DIGCF_ALLCLASSES );
if (hDevInfo == INVALID_HANDLE_VALUE)
{
// Insert error handling here.
return NULL;
}
// Enumerate through all devices in Set.
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (i=0;SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData);i++)
{
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
//
// Call function with null to begin with,
// then use the returned buffer size (doubled)
// to Alloc the buffer. Keep calling until
// success or an unknown failure.
//
// Double the returned buffersize to correct
// for underlying legacy CM functions that
// return an incorrect buffersize value on
// DBCS/MBCS systems.
//
while (!SetupDiGetDeviceRegistryProperty(
hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
if (buffer) LocalFree(buffer);
// Double the size to avoid problems on
// W2k MBCS systems per KB 888609.
buffer = LocalAlloc(LPTR,buffersize * 2); // <- Error Occurs Here
}
else
{
// Insert error handling here.
break;
}
}
printf("Result:[%s]\n",buffer);
if (buffer) LocalFree(buffer);
}
if ( GetLastError()!=NO_ERROR && GetLastError()!=ERROR_NO_MORE_ITEMS )
{
// Insert error handling here.
return NULL;
}
// Cleanup
SetupDiDestroyDeviceInfoList(hDevInfo);
欢迎提出想法。谢谢。
最佳答案
LocalLock() 返回指针。但这是 18 岁的愚蠢,只是使用
// Change the buffer size.
delete buffer;
// Double the size to avoid problems on
// W2k MBCS systems per KB 888609.
buffer = new TCHAR[buffersize * 2];
暂时忽略仍在使用 TCHAR 的约 7 年的愚蠢行为。您的 printf() 语句需要工作,具体取决于您是否使用 Unicode 进行编译。 %ls 如果你这样做。我猜这是你真正的问题,使用 wprintf()。
关于c++ - 将 HLOCAL 转换为 LPTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027917/
如何将 HLOCAL 数据类型转换为 LPTSTR 数据类型?我正在尝试从 Microsoft 获取代码片段,这是唯一的错误,我不确定如何解决: // Create a HDEVINFO with a
我是一名优秀的程序员,十分优秀!