[BCB] USB device 的 GUID |
答題得分者是:popzone
|
tunkai
一般會員 發表:3 回覆:6 積分:6 註冊:2008-11-27 發送簡訊給我 |
小弟參考之前的討論,寫了一段找出所有USB裝置的GUID的程式,
印出下面的結果; [Dev] Intel(R) 82801G (ICH7 Family) USB Universal Host Controller - 27C8: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Intel(R) 82801G (ICH7 Family) USB Universal Host Controller - 27C9: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Intel(R) 82801G (ICH7 Family) USB Universal Host Controller - 27CA: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Intel(R) 82801G (ICH7 Family) USB Universal Host Controller - 27CB: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Intel(R) 82801G (ICH7 Family) USB2 Enhanced Host Controller - 27CC: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Root Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Root Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Root Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Root Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Root Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Mass Storage Device: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Generic USB Hub: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Mass Storage Device: {36FC9E60-C465-11CF-8056-444553540000} [Dev] Altera USB-Blaster: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Composite Device: {36FC9E60-C465-11CF-8056-444553540000} [Dev] USB Composite Device: {36FC9E60-C465-11CF-8056-444553540000} 小弟發現他們GUID號碼都一樣,想說是不是程式寫錯了, 用Regedit.exe到HKEY_LOCAL_MACHINE中去看,發現GUID的號碼的確都是一樣的, 請問如果我想要取得的設備是Altera USB-Blaster: {36FC9E60-C465-11CF-8056-444553540000}的話, 我該用哪一個GUID去取得handle?? |
tunkai
一般會員 發表:3 回覆:6 積分:6 註冊:2008-11-27 發送簡訊給我 |
|
popzone
一般會員 發表:0 回覆:4 積分:10 註冊:2005-09-18 發送簡訊給我 |
===================引 用 tunkai 文 章=================== 小弟搜尋一些討論後發現 DevicePath的格式為 \\\\?\\USB#Vid_09fb&Pid_6001#91#d2#8408#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 這是代表我已知VID與PID後按照他的格式排列,就可以去取他的handle了嗎? USB GUID Class = USB ClassGuid = {36fc9e60-c465-11cf-8056-444553540000} USB 设备 GUID Identifier GUID_DEVINTERFACE_USB_DEVICE Class GUID {A5DCBF10-6530-11D2-901F-00C04FB951ED} 设备GUID跟你的驱动互相联系 需要你自己去找 可以利用USB插拔的消息帧测 ,以下USB DELPHI 代码 1 ,首先注册消息 //============================================================================== // Register USB Drvicer Notify //============================================================================== const InterfaceClassGuid: TGUID; const hWnd: HWND; Var hDeviceNotify: HDEVNOTIFY): Boolean; var NotificationFilter : DEV_BROADCAST_DEVICEINTERFACE ; begin NotificationFilter.dbcc_size := sizeof(DEV_BROADCAST_DEVICEINTERFACE); NotificationFilter.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE; NotificationFilter.dbcc_classguid := InterfaceClassGuid; //你的硬件GUID ,还没有得到 用USB ClassGuid = {36fc9e60-c465-11cf-8056-444553540000} hWnd, // events recipient @NotificationFilter, // type of device DEVICE_NOTIFY_WINDOW_HANDLE {or DEVICE_NOTIFY_ALL_INTERFACE_CLASSES //还没有得到 就 捕获所有硬件更改消息} ); begin ShowMessage('USB Initializtion Error !'); Result := FALSE; exit end; Result := TRUE; end; 2 在窗体主消息循环里侦测 注册的消息 //============================================================================== // Windows Message //============================================================================== procedure TForm1.FormWndProc(var Message: TMessage); var devType: Integer; Datos: PDEV_BROADCAST_HDR; B : PDEV_BROADCAST_DEVICEINTERFACE; begin OldWindowProc(Message); case Message.Msg of WM_DEVICECHANGE : begin if (Message.wParam = DBT_DEVICEARRIVAL) or (Message.wParam = DBT_DEVICEREMOVECOMPLETE) then begin {// B := PDEV_BROADCAST_DEVICEINTERFACE(Message.lParam); // Memo1.Lines.Add(GUIDToString(B.dbcc_classguid));// 这里打印出你的需要侦测的 GUID} Datos := PDEV_BROADCAST_HDR(Message.lParam); devType := Datos^.dbch_devicetype; if devType = DBT_DEVTYP_DEVICEINTERFACE then begin // USB Device if Message.wParam = DBT_DEVICEARRIVAL then begin //showmessage('USBArrival'); end else begin //showmessage('USBRemove'); end; end; end; end; // else // DefWindowProc(Self.Handle, Msg, wParam, lParam); end;
編輯記錄
popzone 重新編輯於 2008-12-03 13:34:06, 註解 無‧
|
popzone
一般會員 發表:0 回覆:4 積分:10 註冊:2005-09-18 發送簡訊給我 |
\\\\?\\USB#Vid_09fb&Pid_6001#5&1bb9c9f4&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
DevicePath 详解 \\\\?\\USB -------> 代表USB设备 Vid_09fb&Pid_6001 -------> 硬件厂商和产品编号 5&1bb9c9f4&0&1 -------> USB 连接编号 {a5dcbf10-6530-11d2-901f-00c04fb951ed} ---> 设备GUID( 通用GUID请参见 WINDOWS DDK) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |