WinUSB の概要 (開発者向け)
ドライバー開発者は、WinUSB (Windows USB) を理解することで、特に USB デバイスを操作する場合に開発プロセスを大幅に効率化できます。 WinUSB は、カスタム ドライバーを記述する必要なく USB デバイスと通信できる Windows に含まれる汎用ドライバーです。 これにより、時間を節約し、複雑さを軽減し、さまざまな Windows バージョン間の互換性を確保できます。
WinUSB を使用する主な利点
簡略化された開発:
- 使いやすさ: WinUSB は、USB 通信に関連する複雑さの多くを抽象化し、USB デバイスとの対話を容易にします。
- カスタム ドライバーは必要ありません:多くの USB デバイスでは、WinUSB を直接使用できるため、カスタム ドライバーを作成して維持する必要はありません。
クロスプラットフォーム互換性:
- 標準化されたインターフェイス: WinUSB は USB 通信用の標準化されたインターフェイスを提供します。これは、さまざまな Windows バージョン間の互換性を確保するために役立ちます。
時間とコスト効率:
- 開発時間の短縮: WinUSB を使用すると、USB ドライバーの開発とテストに必要な時間を大幅に短縮できます。
- メンテナンス コストの削減: WinUSB は Microsoft によって保守されているため、更新とサポートに依存できるため、長期的なメンテナンス コストを削減できます。
USB 機能へのアクセス:
- 完全な USB 機能: WinUSB は、一括転送、制御転送、割り込み転送、等時転送など、幅広い USB 機能をサポートしています。
WinUSB で実現できること
デバイス通信:
- データ転送: 一括転送、制御転送、割り込み転送、等時転送を使用して、USB デバイスとの間でデータを送受信します。
- 制御要求: 制御要求を送信して、デバイスを構成するか、情報を取得します。
デバイス構成:
- 構成の設定: 構成、インターフェイス、および代替設定を選択して、USB デバイスを構成します。
- エンドポイント管理: データ転送のエンドポイントを管理します。
デバイス列挙:
- デバイス識別: システムに接続されている USB デバイスを列挙して識別します。
- 記述子の取得: デバイス記述子、構成記述子、インターフェイス記述子、およびエンドポイント記述子を取得します。
カスタム アプリケーション:
- ユーザー モード アプリケーション: WinUSB API を使用して USB デバイスと通信するユーザー モード アプリケーションを開発します。
- ファームウェアの更新: USB デバイスのファームウェア更新メカニズムを実装します。
テストとデバッグ:
- プロトタイプ作成: USB デバイス通信をすばやくプロトタイプ化してハードウェア機能をテストします。
- デバッグ: WinUSB を使用して、ホストと USB デバイス間の通信の問題をデバッグします。
WinUSB のコンポーネント
WinUSB には以下が含まれます。
- カーネル モード ドライバー (winusb.sys)
- winusb.h で説明されている WinUSB 関数を公開するユーザー モードダイナミック リンク ライブラリ (winusb.dll)。 これらの関数を使用して、ユーザーモード ソフトウェアで USB デバイスを管理できます。
既定では、winusb.sysは上位フィルター ドライバーとしてデバイスのカーネル モード スタックにインストールされます。 アプリはデバイスの UMDF ファンクション ドライバーと通信して、読み取り、書き込み、またはデバイス I/O 制御要求を発行します。 この構成では、winusb.sysはデバイス スタックのプラグ アンド プレイおよび電源所有者として機能します。 USB デバイスのファンクション ドライバーとしてwinusb.sysをインストールすることもできます。
WinUSB の概要
このセクションには、次の情報が含まれます。
- デバイスに適したドライバーを選択する
- WinUSB を使用した USB デバイスとの通信
- USB デバイスのファンクション ドライバーとしてwinusb.sysをインストールする
アプリと USB デバイスの通信方法を示す詳細なコード例もあります。
Note
WinUSB では、Windows 8 以降のアイソクロナス転送がサポートされています。