| 
					阅读:2972回复: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-10-15 16:05 
					一个设备在注册表中可能会有几个属于不同设备类的GUID,如USB mouse即拥有属于鼠标的GUID,又拥有属于usb的guid,还有属于hid设备类的guid,所以,你要找到你想要的guid才行,不能见到一个就以为它就是了。				 | |
| 板凳#发布于:2004-10-15 11:50 
					就是GUID的错误,你查到的guid在注册表中的映射,在Devices Class中的才可以 				 | |
| 地板#发布于:2004-09-06 18:08 
					但我的guid是对的阿				 | |
| 地下室#发布于:2004-08-01 09:34 
					一般是guid不对				 | |
| 5楼#发布于:2004-07-30 09:45 
					我也正好遇到这个问题
 我是要打开一个usb设备 也如楼主所说SetupDiEnumDeviceInterfaces总是返回0 郁闷了好几天了 请大侠帮帮忙吧 | |
| 6楼#发布于:2004-07-25 15:53 
					谢谢这位大哥				 | |
| 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-17 15:33 怎么在注册表里找GUID啊,那么多 谁能指出GUID在注册表里的路径吗? [编辑 - 7/18/04 by billy2004] | |
| 9楼#发布于:2004-07-16 15:22 
					gz				 | |
| 
 | 
| 10楼#发布于:2004-07-15 19:18 
					我的GUID用的是8139网卡的。没有错。
 我没有驱动程序源码。所以也不可能从你说的device.h中获得guid。 其实我打开设备的最终目的是不想使用windows的TCP/IP,想直接让网卡发送我在链路层的自定义数据。 从链路层的“协议类型”字段开始填入我自定义的数据格式,不使用IP格式。 哪位大侠帮帮忙! | |
| 
 | 
| 11楼#发布于:2004-07-15 13:16 
					GUID在你的驱动程序中应该有定义,直接用那个。
 DS带的有个头件devintf.h,封装好了,很好用 | |
| 
 | 
| 12楼#发布于:2004-07-15 11:22 
					怎么在注册表里找GUID啊,那么多				 | |
| 13楼#发布于:2004-07-13 19:07 
					可能你的guid错了,在注册表里好好找吧,把找出来的象guid的都试试。				 | |
 
							
 
				 
				