阅读:1668回复:5
关于SetupDiEnumDeviceInterfaces函数出错的问题!详见:
在论坛中经常见到有人问SetupDiEnumDeviceInterfaces函数返回出错的问题!(我也问过)。其中在调用这个函数之前,都先要调用SetupDiGetClassDevs函数来准备要查找的设备,其中要指定一个GUID,关于这个GUID我一直都没有弄清楚是设备的GUID还是CLASSGUID。原先一直是当CLASSGUID的,经过我实验后发现,应该是设备的GUID。也就是设备在注册表中的SymbolicName后的GUID!各位试试应该可以成功的!
|
|
沙发#
发布于:2004-11-26 09:49
是的!
|
|
板凳#
发布于:2004-11-26 08:39
这里的GUID 应该是在驱动程序中定义的那个GUID.
驱动大家都不一样,安装哪个驱动就用哪个GUID. |
|
地板#
发布于:2004-11-26 08:23
用a5dcbf10-6530-11d2-901f-00c04fb951ed试试!
|
|
地下室#
发布于:2004-11-24 14:22
我也是按照SYMBOLICNAME来使用的,但是得不到设备的句柄,返回No matched Device
\??\USB#Vid_0471&Pid_0666#5&2858e07&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed} HDEVINFO HardwareDeviceInfo; SP_DEVICE_INTERFACE_DATA deviceInfoData; int NumberDevices; ULONG lLastError; HardwareDeviceInfo = SetupDiGetClassDevs( (LPGUID)&GUID_CLASS_D12_BULK,//{6bdd1fc6-810f-11d0-bec7-08002be2092f} NULL, NULL, (DIGCF_PRESENT|DIGCF_DEVICEINTERFACE) ); if(HardwareDeviceInfo == INVALID_HANDLE_VALUE) { AfxMessageBox("Get Device Class Failed"); } else { AfxMessageBox("Get Device Class Success"); } NumberDevices = 4; deviceInfoData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); for(int i=0;i < NumberDevices;i++) { //retrieves a context structure for a device interface of a device //information set. Each call returns information about one device interface SetupDiEnumDeviceInterfaces(HardwareDeviceInfo, 0, (LPGUID)&GUID_CLASS_D12_BULK, i, &deviceInfoData); } lLastError = ::GetLastError(); if(GetLastError()==ERROR_NO_MORE_ITEMS) AfxMessageBox("No matched Device"); else { AfxMessageBox("Found matched Device"); } |
|
5楼#
发布于:2004-11-24 11:26
看来大家都知道了!呵呵!
|
|