USBポートの速度(またはバージョン)をプログラムで簡単に決定する方法はありますか?私は最大帯域幅に基づいてUSBポートに送信されるデータの速度を制御しようとしています。USBポートの速度を調べるにはどうすればよいですか?
答えて
は、Windowsのためのソリューションを必要とする場合、これは良いスタートする必要があります:
http://msdn.microsoft.com/en-us/library/ms793313.aspx
基本的にはこれを試してみてください:
- USBデバイスとそれらのドライバにシンボリック名を列挙
- CreateFileを使用して、USBデバイスドライバのシンボリック名のハンドルを開きます。
- コントロールコード
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX
のドライバハンドルのDeviceIoControl。これにより、構造USB_NODE_CONNECTION_INFORMATION_EX
が返されます。そこにはSpeed
というタイプのメンバーがあります。タイプはUSB_DEVICE_SPEED
です。 - (ドライバハンドルを閉じます)
また、これはあなたのための興味深いことができますCodeProject: Enumerate Properties of an Installed Device
ここに余分な詳細をありがとうRobert – SwDevMan81
あなたの質問に答えるために、私はあなたが必要な情報を得るための方法があることを確信しています。私は窓の答えを知らないが、Linuxにはsysfsディレクトリ構造内で読むことができるファイルがある。
速度制御は、通常、ドライバとバスを制御するハードウェアによって行われます。現代のほとんどのUSBコントローラには、ポートあたり2つのコントローラが接続されています。低速12Mbps USB 1.0の場合は1、高密度480Mbps USB 2.0の場合はもう1つ。それを正しく接続する魔法のスイッチが内部にあります。ドライバ自体は、すべてが適切に列挙されているかどうか、フローを制御しているかどうかなどを確認します。通常、上位レベルの「ユーザスペース」アプリケーションは、これらのことを心配する必要はありません。
また、12Mbpsを超える速度で動作するデバイスを12Mbpsポートに接続すると、好きなように12Mbpsにドラッグされます。あなたはそれが引きずられていることを知りたいのですか?
なぜこれをやりたいですか? – Brian
質問には、最大データレートを知る必要があります。 – SwDevMan81
明快にするために、問題は「私たちはX MB/sを書き込むことができるデバイスを持っていますが、そのポートがそのレートをサポートできるかどうかはわかりません」しかし、おそらくデバイスの速度が限界だと思っていました。あなたは正しいSwDevMan81です! ;) – Isaac