阅读:2792回复:13
为什么SetupDiEnumDeviceInterfaces总是返回0?
我使用SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces和SetupDiGetInterfaceDeviceDetail,查找设备名。
我在注册表中找到一个GUID,为什么SetupDiEnumDeviceInterfaces总是返回0? 谢谢大侠! HDEVINFO hDevInfoSet; SP_DEVINFO_DATA device; SP_DEVICE_INTERFACE_DATA ifdata; PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail; int nCount=0; BOOL bResult=false; hDevInfoSet =SetupDiGetClassDevs(lpGuid,NULL,NULL,DIGCF_PRESENT |DIGCF_DEVICEINTERFACE); if(hDevInfoSet==INVALID_HANDLE_VALUE) { return 0; } ifdata.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); device.cbSize=sizeof(SP_DEVINFO_DATA); device.ClassGuid=DiskClassGuid; ifdata.Flags=SPINT_ACTIVE; ifdata.InterfaceClassGuid=DiskClassGuid; bResult = SetupDiEnumDeviceInterfaces( hDevInfoSet, NULL, lpGuid, (ULONG)nCount, &ifdata); if(!bResult && (GetLastError()==ERROR_NO_MORE_ITEMS)) { MessageBox("没有匹配的设备"); } else { MessageBox("找到一个设备"); return 0; } pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, INTERFACE_DETAIL_SIZE); pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, &ifdata, pDetail, INTERFACE_DETAIL_SIZE, NULL, NULL); |
|
|
沙发#
发布于:2004-07-13 19:07
可能你的guid错了,在注册表里好好找吧,把找出来的象guid的都试试。
|
|
板凳#
发布于:2004-07-15 11:22
怎么在注册表里找GUID啊,那么多
|
|
地板#
发布于:2004-07-15 13:16
GUID在你的驱动程序中应该有定义,直接用那个。
DS带的有个头件devintf.h,封装好了,很好用 |
|
|
地下室#
发布于:2004-07-15 19:18
我的GUID用的是8139网卡的。没有错。
我没有驱动程序源码。所以也不可能从你说的device.h中获得guid。 其实我打开设备的最终目的是不想使用windows的TCP/IP,想直接让网卡发送我在链路层的自定义数据。 从链路层的“协议类型”字段开始填入我自定义的数据格式,不使用IP格式。 哪位大侠帮帮忙! |
|
|
5楼#
发布于:2004-07-16 15:22
gz
|
|
|
6楼#
发布于:2004-07-17 15:33
怎么在注册表里找GUID啊,那么多 谁能指出GUID在注册表里的路径吗? [编辑 - 7/18/04 by billy2004] |
|
7楼#
发布于:2004-07-23 11:55
在windows2000下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_80B31043&REV_10\4&3b90381f&0&68F0 |
|
|
8楼#
发布于:2004-07-25 15:53
谢谢这位大哥
|
|
9楼#
发布于:2004-07-30 09:45
我也正好遇到这个问题
我是要打开一个usb设备 也如楼主所说SetupDiEnumDeviceInterfaces总是返回0 郁闷了好几天了 请大侠帮帮忙吧 |
|
10楼#
发布于:2004-08-01 09:34
一般是guid不对
|
|
11楼#
发布于:2004-09-06 18:08
但我的guid是对的阿
|
|
12楼#
发布于:2004-10-15 11:50
就是GUID的错误,你查到的guid在注册表中的映射,在Devices Class中的才可以
|
|
13楼#
发布于:2004-10-15 16:05
一个设备在注册表中可能会有几个属于不同设备类的GUID,如USB mouse即拥有属于鼠标的GUID,又拥有属于usb的guid,还有属于hid设备类的guid,所以,你要找到你想要的guid才行,不能见到一个就以为它就是了。
|
|