阅读:1340回复:0
做过的兄弟们,帮帮我找出问题在哪里吧!!!
请问为什么我的SetupDiEnumDeviceInterfaces函数返回值总是0?
const GUID CardGuid={0x36fc9e60L, 0xc465, 0x11cf, {0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} }; HDEVINFO hDevInfo = SetupDiGetClassDevs(&CardGuid,NULL,NULL,(DIGCF_PRESENT | DIGCF_INTERFACEDEVICE)); if(!hDevInfo) { ShowMessage("Couldn't get handle for HID devices"); return; } unsigned long Index; DWORD ReqLength; DWORD Flags=DIGCF_PRESENT|DIGCF_DEVICEINTERFACE; PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceDetailData; SP_DEVICE_INTERFACE_DATA DeviceInterfaceData; DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA); HANDLE hCard=SetupDiGetClassDevs(&CardGuid,NULL,NULL,Flags); if(hCard==INVALID_HANDLE_VALUE) { ShowMessage("Invalid Parameters!"); return; } BOOL status=SetupDiEnumDeviceInterfaces(hCard,0,&CardGuid,Index,&DeviceInterfaceData); if(!status) { ShowMessage("Failed to enumurate the specified device!"); CloseHandle(hCard); return; } SetupDiGetInterfaceDeviceDetail(hCard,&DeviceInterfaceData,NULL,0,&ReqLength,NULL); DeviceDetailData=(PSP_INTERFACE_DEVICE_DETAIL_DATA)new char[ReqLength]; if(DeviceDetailData) { ShowMessage("ERROR NOT ENOUGH MEMORY!"); CloseHandle(hCard); return; } status=SetupDiGetInterfaceDeviceDetail(hCard,&DeviceInterfaceData,DeviceDetailData,ReqLength,&ReqLength,NULL); if(!status) { ShowMessage("Failed to get interface detailed data"); delete DeviceDetailData; DeviceDetailData=NULL; return; } HANDLE hUSB = CreateFile(DeviceDetailData->DevicePath, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL); free(DeviceDetailData); if(INVALID_HANDLE_VALUE == hUSB) { ShowMessage("Couldn't get HID handle"); return; } |
|