私のアプリはvendor-id、device-idなどの特定の情報を持つUSBキーから実行されます。実行ファイルがどこにあるかについての情報を入手する方法C++
私はlibusbを使ってみましたが、まだ正しく動作させることはできませんが、情報を取得するにはどのように正しいUSBドライブを見つけることができますか?
私はコードがクロスプラットフォームであることを願っています。そのため、まずlibusbを選択します。
編集:
私はすべてのUSBポートと、接続のドライブ上の特定の情報を列挙するプログラム(usbviewer)を発見しました。
私は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の場合、私はFATファイルシステムを持つドライブのシリアル番号を読むために、Linuxの関数GetVolumeInformation()
を使用します.FATバージョンに応じて、0x27または0x43から始まる対応する/ dev/*ファイルの4バイトを読み込みます。
しかし、この読書は、プログラムにはないルートアクセスを必要とし、それは私には少し信頼できないようです。
アイデア?
クロスプラットフォームの意味はどのプラットフォームですか?私はあなたがMVSを気にしないと思うので、おそらくいくつかのWindowsのバージョン、Linux、OS Xが含まれていますか?アンドロイド? iOS? –
argcとargvのmain()の引数を取る場合、最初の引数は、実行可能ファイルのコマンド(実行に使用されたコマンド)を常にフルパス情報で示します。そこからlibusb –
Windows、Linux、OS Xのようなものを使うことができます。それはモバイルデバイスでは使用されません。 パスは私をlibusbデータ構造デバイスにリンクできますか? – perelo