ユニバーサル シリアル バス (USB)

ユニバーサル シリアル バス (USB) は、拡張可能なプラグ アンド プレイシリアル インターフェイスを提供し、周辺機器の標準の低コスト接続を保証します。 USB デバイスには、キーボード、マウス、ジョイスティック、プリンター、スキャナー、記憶装置、モデム、ビデオ会議カメラなどが含まれます。

USB-IF は Special Interest Groups (SIGs) であり、公式の USB 仕様、テスト仕様、テスト ツールに準拠しています。

Windows オペレーティング システムは、公式の USB 仕様に準拠する USB ホスト コントローラー、ハブ、デバイス、システムをネイティブ サポートしています。 Windows からはプログラミング インターフェイスも提供されます。これを利用し、USB デバイスと通信するデバイス ドライバーアプリケーションを開発できます。

デバイス ビルダー用 USB アイコンドライバー開発者用 USB アイコンアプリ開発者用 USB アイコンUSB HCK 認定アイコン

Windows の USB

開発ツール

USB サンプル

Windows 用の USB ドライバーまたはアプリを作成する

USB ドライバー開発の概要を紹介します。 デバイスに USB ドライバーを提供するために最も適したモデルを選択するための情報を提供します。

USB クライアント ドライバーを記述する (KMDF、UMDF)

このセクションには、Microsoft Visual Studio に含まれる USB テンプレートを使用して、最初のユーザー モードとカーネル モードの USB ドライバーを記述する方法に関するチュートリアルが含まれています。

USB ホスト コントローラー ドライバーを記述する

仕様に準拠していない xHCI ホスト コントローラーを開発している場合、またはカスタムの非 xHCI ハードウェア (仮想ホスト コントローラーなど) を開発している場合は、UCX と通信するホスト コントローラー ドライバーを記述できます。 たとえば、USB デバイスをサポートする無線ドックを検討してください。 PC は、トランスポートとして TCP 経由の USB を使用することで、無線ドック経由で USB デバイスと通信します。

USB デバイスの関数コントローラー ドライバーを記述する

ホストによってデバイスに送信される USB データ転送とコマンドをすべて処理するコントローラー ドライバーを開発できます。 このドライバーは、Microsoft 提供の USB 関数コントローラー拡張 (UFX) と通信します。

USB 機能コントローラー用 Windows ドライバーの開発

USB 関数クラス拡張 (UFX) 参照

USB Type-C コネクタ ドライバーを記述する

Windows 10 には、新しい USB コネクタのサポートが導入されています。USB Type-C。 Microsoft 提供のクラス拡張モジュールと通信するコネクタのドライバーを記述できます。UcmCx は、どのポートで Type-C をサポートするか、どのポートで補助電源を与えるかなど、Type-C コネクタに関連するシナリオに対応します。

USB Type-C コネクタ用 Windows ドライバーの開発

USB コネクタ マネージャー クラス拡張 (UcmCx) 参照

USB デュアルロール コントローラー ドライバーを記述する

Windows 10 は USB デュアルロール コントローラー対応になりました。 Windows には、ChipIdea および Synopsis コントローラー用のインボックス クライアント ドライバーが含まれています。 その他のコントローラーの場合、デュアルロール クラス拡張 (UrsCx) とそのクライアント ドライバーが互いに通信し、デュアルロール コントローラーのロール切り替え機能を処理できるようにする一連のプログラミング インターフェイスが Microsoft から提供されます。

この機能の詳細については、以下を参照してください。

USB デュアル ロール ドライバー スタック アーキテクチャ

USB デュアルロール コントローラー ドライバーのプログラミング参照

エミュレートされたデバイスの USB ドライバーを記述する

エミュレートされたユニバーサル シリアル バス (USB) ホスト コントローラー ドライバーと接続された仮想 USB デバイスを開発できます。 いずれのコンポーネントも、Microsoft 提供の USB デバイス エミュレーション クラス拡張 (UdeCx) と通信する 1 つの KMDF ドライバーに統合されます。

列挙された USB デバイス (UDE) 用 Windows ドライバーの開発

エミュレートされた USB ホスト コントローラー ドライバーのプログラミング参照

USB ドライバーを開発するための WDF 拡張

UWP アプリを記述する

Windows デスクトップ アプリを記述する

Windows で USB デバイスをテストする

Microsoft USB テスト ツール (MUTT) デバイスの概要

USB ハードウェアまたはソフトウェアをテストするためのツールに関する情報を取得し、操作やその他のシステム イベントの足跡を記録し、クライアント ドライバーまたはアプリケーションによって送信された要求に USB ドライバー スタックがどのように応答するのかを観察します。

ハードウェア認証キットでテストの概要を読みます。ハードウェアのベンダーやデバイスのメーカーは自社の USB デバイスやホスト コントローラーを Windows ハードウェア認定のために提出するとき、このキットを利用して準備します。

ユニバーサル シリアル バス 4 (USB4™)

USB のためのその他のリソース

  • 公式 USB 仕様: USB プロトコルの完全な技術的な詳細を提供します。

  • Microsoft Windows USB Core チームのブログ: Microsoft USB チームが作成した投稿を確認してください。 このブログでは、Windows PC に搭載されたさまざまな USB ホスト コントローラーや USB ハブと連動する Windows USB ドライバー スタックを中心に取り上げています。 USB クライアント ドライバー開発者と USB ハードウェア デザイナーがドライバー スタックの実装を理解し、一般的な問題を解決し、トレースとログ ファイルを収集するためのツールを使用する方法を説明するのに役立つリソースです。

  • OSR Online Lists - ntdev: カーネル モード ドライバー開発者向けに OSR Online によって管理されるディスカッション リスト。

  • Windows ハードウェア デベロッパー センター: Windows オペレーティング システムで動作する USB デバイスとドライバーの開発を初めて使用する開発者からよく寄せられる質問に基づくその他のリソース。

学習向け USB ハードウェア

  • MUTT デバイス: MUTT および SuperMUTT デバイスと付属のソフトウェア パッケージは、USB テストの HCK スイートに統合されています。 USB のコントローラー、デバイス、システムの開発周期において、特にストレス テストにおいて使用できる自動化されたテストを提供します。

  • OSR USB FX2 ラーニング キット: USB ドライバー開発を初めて使用する場合。 このキットは、このドキュメント セットに含まれている学習用 USB サンプルに最も適しています。 OSR オンライン ストアからラーニング キットを入手できます。

Microsoft が提供する USB ドライバーについて説明します

  • Windows の USB デバイス側ドライバー: USB 関数スタックのアーキテクチャについて説明します。

  • Windows の USB ホスト側ドライバー: ユニバーサル シリアル バス (USB) ドライバー スタック アーキテクチャの概要について説明します。 Microsoft からは、EHCI コントローラーと xHCI コントローラーに接続されているデバイスと相互運用するドライバーのコア スタックが提供されます。

  • USB-IF デバイス クラス ドライバー: サポートされている USB デバイス クラス用の Microsoft が提供するドライバーの一覧を示します。 Windows からは、USB-IF 認定のさまざまなデバイス クラス、オーディオ、大容量記憶装置などのインボックス デバイス クラス ドライバーが提供されます。

  • USB 汎用関数ドライバー -WinUSB: WinUSB は、Windows Vista 以降のすべてのバージョンの Windows に含まれている USB デバイス用の汎用ドライバーです。 Windows からは、カスタム デバイスと複合デバイスの関数の関数ドライバーとして読み込まれる Winusb.sys が提供されます。

  • 複合デバイスの USB 汎用親ドライバー – Usbccgp: 複数の機能を持つ USB デバイスの親ドライバー。 Usbccgp では、これらの関数のそれぞれに対して物理デバイス オブジェクト (PDO) が作成されます。 これらの個々の PDO は、それぞれの USB ファンクション ドライバーを管理します。これは、Winusb.sys ドライバーまたは USB デバイス クラス ドライバーです。