我有使用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
任何想法有什么问题?
这很有效,非常感谢! –