阅读:1381回复:1
急!!!关于检索usb设备的问题
这是我用于检索USB设备的函数,可是它无法检索到我插入的usb设备,如:U盘.请教解决的办法
void CTestUSBDlg::OnShowusbhid() { // TODO: Add your control notification handler code here m_showMessage.Empty(); //ShowHidInfo(); GUID guidHID; HidD_GetHidGuid(&guidHID); CString strShow; strShow.Format("%08x-%04x-%04x-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\r\n", guidHID.Data1,guidHID.Data2,guidHID.Data3,guidHID.Data4[0], guidHID.Data4[1],guidHID.Data4[2],guidHID.Data4[3],guidHID.Data4[4], guidHID.Data4[5],guidHID.Data4[6],guidHID.Data4[7]); ShowMessage(strShow); HDEVINFO hDevInfo = SetupDiGetClassDevs(&guidHID,NULL,0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); UINT nIndex = 0; ShowMessage("正在查找可用的USB设备...\r\n"); SP_DEVICE_INTERFACE_DATA strtInterfaceData; BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,0, &strtInterfaceData); if(!bSuccess){ ShowMessage("抱歉,未找到可用的USB设备"); SetupDiDestroyDeviceInfoList(hDevInfo); return; } SP_DEVICE_INTERFACE_DETAIL_DATA strtDetailData; if (!SetupDiGetDeviceInterfaceDetail(hDevInfo,&strtInterfaceData, &strtDetailData,sizeof(strtDetailData),NULL,NULL)) { AfxMessageBox(_T("查找设备路径时出错!")); SetupDiDestroyDeviceInfoList(hDevInfo); return; } CString SDevicePath = strtDetailData.DevicePath; SDevicePath = "可以通过路径%s访问设备\r\n" + SDevicePath; ShowMessage(SDevicePath); HANDLE hCom = CreateFile(SDevicePath,GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if (hCom = INVALID_HANDLE_VALUE) { AfxMessageBox(_T("无法打开通信端口")); SetupDiDestroyDeviceInfoList(hDevInfo); return; } HIDD_ATTRIBUTES strtAttrib; ShowMessage("正在读取设备的标识...\r\n"); if (!HidD_GetAttributes(hCom,&strtAttrib)) { AfxMessageBox(_T("查询设备状态时出错!")); CloseHandle(hCom); SetupDiDestroyDeviceInfoList(hDevInfo); } ShowMessage("已读取,见右边所示\r\n"); CString strShow1; strShow1.Format("0x%x",strtAttrib.VendorID); ShowMessage(strShow1); strShow1.Format("0x%x",strtAttrib.ProductID); ShowMessage(strShow1); strShow1.Format("%d",strtAttrib.VersionNumber); ShowMessage(strShow1); CloseHandle(hCom); SetupDiDestroyDeviceInfoList(hDevInfo); } |
|
沙发#
发布于:2005-07-14 17:36
参考DDK 中USBVIEW的代码就可以了。
|
|