[問題] 對USB設備要進行Setup Enumeration失敗了!

看板C_and_CPP (C/C++)作者 (小灰)時間13年前 (2012/06/29 17:52), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
我的問題是有兩個GUID: 第1個GUID(0xA5DCBF10L,.....) 第2個是1顆隨身碟的GUID(0x36FC9E60....) 執行SetupDiEnumDeviceInterfaces(...)函式時,GUID是0xA5DCBF10L的結果是True, 而換成GUID是0x36FC9E60的結果是False,網路上也爬文爬好久,是說不在裝置內的guid 請問我要如何讓USB隨身碟可以Setup Enumeration成功,而open device呢? 有什麼工作要去處理呢? 謝謝~~~~ 程式碼如下: static GUID GUID_DEVINTERFACE_USB_DEVICE = //{0xA5DCBF10L,0x6530,0x11D2,{0x90,0x1F,0x00,0xC0,0x4F,0xB9,0x51,0xED } }; { 0x36FC9E60,0xC465,0x11CF,{0x80,0x56,0x44,0x45,0x53,0x54,0x00,0x00 } }; HDEVINFO hDevInfo = SetupDiGetClassDevs( &GUID_DEVINTERFACE_USB_DEVICE, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE ); DWORD dwIndex = 0; SP_DEVICE_INTERFACE_DATA devInterfaceData; ZeroMemory(&devInterfaceData, sizeof(SP_DEVICE_INTERFACE_DATA)); devInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); BOOL bRet = FALSE; while(TRUE) { bRet = SetupDiEnumDeviceInterfaces( hDevInfo, NULL, &GUID_DEVINTERFACE_USB_DEVICE, dwIndex, &devInterfaceData ); ULONG n = GetLastError(); if (!bRet) { if (GetLastError() == ERROR_NO_MORE_ITEMS) { break; } } dwIndex++; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.17.30

06/29 22:31, , 1F
好像在寫國軍的USB鎖定軟體
06/29 22:31, 1F

06/30 15:11, , 2F
隨身碟可能要用GUID_DEVINTERFACE_DISK
06/30 15:11, 2F

07/01 22:35, , 3F
為什麼不走 USBSTOR? 不然你掛個 USBBULK.SYS 也可以啊 ..
07/01 22:35, 3F

07/01 22:36, , 4F
另外,GUID 應該是會指向 Driver 不是 Device 吧
07/01 22:36, 4F

07/01 22:41, , 5F
你給的兩個GUID 一是 USB_HUB/CONTROLLER,一是INTERFACE
07/01 22:41, 5F

07/01 22:43, , 6F
建議先用USBVIEW 或BUS_HOUND 搞清楚是要從哪個驅動找裝置
07/01 22:43, 6F

07/01 22:43, , 7F
再從哪個驅動的GUID開始弄
07/01 22:43, 7F
文章代碼(AID): #1FxNh06R (C_and_CPP)
文章代碼(AID): #1FxNh06R (C_and_CPP)