我的應用程序將從USB密鑰中運行,其中包含供應商ID,設備ID ...等我需要的特定信息。如何獲取可執行文件位於C++中的驅動器的信息
我試過使用libusb,但儘管我仍然無法使它正常工作,我怎麼能找到正確的USB驅動器來獲取信息?
請注意,我希望代碼是跨平臺的,這就是爲什麼我首先選擇libusb。
編輯:
我發現了一個程序(usbviewer)時,它的連接,列舉所有的USB接口和驅動器上的特定信息。
我已經閱讀了linux的源碼,信息是直接從/ proc/bus/usb/devices中提取的,它非常簡單。
但是,在windows上,爲了獲得usb節點連接信息,在獲取數據結構中的實際信息(枚舉集線器控制器,根集線器,端口...)之前,需要大約1000行。
libusb在其他方面迫使我生成一個INF文件,並通過inf-wizard.exe爲每個設備安裝一個驅動程序,然後才能夠獲取信息(儘管在Linux上不嘗試)。
編輯2:
我已經找到一種方式來獲得與Windows,Linux和Mac OS X設備的序列號(沒有嘗試MAC OS X,但它應該作爲Linux的只是工作)。對於Windows,我使用Linux上的函數GetVolumeInformation()
來讀取帶有FAT文件系統的驅動器的序列號,根據FAT版本,我從對應的/ dev/*文件中讀取4個字節,從0x27或0x43開始。
但是這樣的閱讀需要程序沒有的根訪問權限,在我看來這有點不可靠。
任何想法?
跨平臺的含義是哪個平臺?我想你不關心MVS,所以它可能包含一些Windows版本,Linux,OS X? Android的? iOS版? –
如果您將argc和argv的main()參數指定爲第一個參數,那麼第一個參數始終指向(用於執行的命令)您的可執行文件,並提供完整路徑信息。從那裏,你可以使用像Windows,Linux和OS X的libusb –
,它不會被移動設備使用。 路徑如何連接到libusb數據結構設備? – perelo