我有使用SETUPAPI在Windows XP上枚舉USB設備代碼:SetupDiGetDeviceRegistryProperty:「傳遞給系統調用的數據區域太小,」錯誤
HDEVINFO hDevInfo = SetupDiGetClassDevs(&_DEVINTERFACE_USB_DEVICE, 0, 0, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
for (DWORD i = 0; ; ++i)
{
SP_DEVINFO_DATA devInfo;
devInfo.cbSize = sizeof(SP_DEVINFO_DATA);
BOOL succ = SetupDiEnumDeviceInfo(hDevInfo, i, &devInfo);
if (GetLastError() == ERROR_NO_MORE_ITEMS)
break;
if (!succ) continue;
DWORD devClassPropRequiredSize = 0;
succ = SetupDiGetDeviceRegistryProperty(hDevInfo, &devInfo, SPDRP_COMPATIBLEIDS, NULL, NULL, 0, &devClassPropRequiredSize);
if (!succ)
{
// This shouldn't happen!
continue;
}
}
它曾經工作多年,但現在我從SetupDiGetDeviceRegistryProperty
得到FALSE
,最後一個錯誤是「傳遞給系統調用的數據區太小」。 似乎我的通話參數對應於此功能的文檔:http://msdn.microsoft.com/en-us/library/windows/hardware/ff551967(v=vs.85).aspx
任何想法有什麼問題?
這很有效,非常感謝! –