您的位置:首页 > 编程语言

Windows下USB磁盘开发系列四:SetupDiEnumDeviceInterfaces()返回ERROR_NO_MORE_ITEMS 259错误代码的原因

2013-11-15 11:30 477 查看
在调用API SetupDiEnumDeviceInterfaces()查询USB设备接口的时候,遇到了259的错误代码:ERROR_NO_MORE_ITEMS。开始不得其解,后来仔细察看了相关的msdn,发现是我调用SetupDiGetClassDevs()的参数使用错了。

定义如下:

HDEVINFO SetupDiGetClassDevs(
  _In_opt_  const GUID *ClassGuid,
  _In_opt_  PCTSTR Enumerator,
  _In_opt_  HWND hwndParent,
  _In_      DWORD Flags
);

第一个参数的说明如下:

ClassGuid [in, optional]

A pointer to the GUID for a device setup class or a
device interface class. This pointer is optional and can be NULL. For more information about how to set ClassGuid, see the following Remarks section.

我开始一直使用下面的方式获取设备句柄:

hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_USB, 0, 0, DIGCF_PRESENT);

然后调用的时候总是返回失败,使用GetLastError()返回259。

正确的做法是要用一个device interface class来获取设备句柄,将上面的调用代码改为:

hDevInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_DISK, 0, 0, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);

再调用numDeviceInterfaces()就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: