阅读:1154回复:2
上位机打不开USB设备
{
// SymbolicName = \\??\\USB#Vid_0471&Pid_0666#5&113f64a0&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed} //这个来源于机器的注册表 GUID hidGUID={ 0xa5dcbf10, 0x6530, 0x11d2, { 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed } }; GUID *p_hidGUID=&hidGUID; HDEVINFO hardwareDeviceInfoSet; SP_DEVICE_INTERFACE_DATA deviceInterfaceData; HANDLE deviceHandle = INVALID_HANDLE_VALUE; DWORD result; DWORD DeviceIndex=0; HidD_GetHidGuid (p_hidGUID); hardwareDeviceInfoSet = SetupDiGetClassDevs (p_hidGUID, NULL, NULL,(DIGCF_PRESENT |DIGCF_DEVICEINTERFACE)); if(hardwareDeviceInfoSet==INVALID_HANDLE_VALUE) { return INVALID_HANDLE_VALUE; } deviceInterfaceData.cbSize = sizeof(deviceInterfaceData); result =SetupDiEnumDeviceInterfaces(hardwareDeviceInfoSet, NULL, p_hidGUID, DeviceIndex, &deviceInterfaceData); if (result == FALSE) { SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet); return INVALID_HANDLE_VALUE; } } 程序运行到这就返回了,即result 为 FALSE。我也试过其它值的 hidGUID 以及 DeviceIndex,结果都一样。 敬请指点! |
|
沙发#
发布于:2003-08-18 20:21
用设备名呢?
|
|
板凳#
发布于:2003-08-19 09:01
单步调试。这是我的程序:
HDEVINFO hardwareDeviceInfo; PSP_INTERFACE_DEVICE_DETAIL_DATA functionClassDeviceData = NULL; SP_INTERFACE_DEVICE_DATA deviceInfoData; hardwareDeviceInfo = SetupDiGetClassDevs ( (LPGUID) &GUID_CLASS_D12_BULK, NULL, // Define no enumerator (global) NULL, // Define no (DIGCF_PRESENT | // Only Devices present DIGCF_INTERFACEDEVICE)); deviceInfoData.cbSize=sizeof(SP_INTERFACE_DEVICE_DATA); int NumberDevice = 4; for(int i = 0; i<NumberDevice; i++) { SetupDiEnumDeviceInterfaces(hardwareDeviceInfo, 0,(LPGUID) &GUID_CLASS_D12_BULK, i, &deviceInfoData); } ULONG predictedLength = 0; ULONG requiredLength = 0; SetupDiGetInterfaceDeviceDetail( hardwareDeviceInfo, &deviceInfoData, //0, NULL, // probing so no output buffer yet 0, // probing so output buffer length of zero &requiredLength, NULL); predictedLength = requiredLength; functionClassDeviceData = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc (predictedLength); functionClassDeviceData->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA); if(!SetupDiGetInterfaceDeviceDetail ( hardwareDeviceInfo, &deviceInfoData, //0, functionClassDeviceData, predictedLength, &requiredLength, NULL)){ return FALSE; } hout = CreateFile(functionClassDeviceData->DevicePath, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); |
|