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

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

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

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

USB for device builders iconUSB for driver developers iconUSB for app developers iconUSB HCK certification icon

Windows の USB

  • USB Type-C コネクタの Windows サポート: USB Type-C コネクタを使用して Windows システムを構築する OEM 向け。

  • ユニバーサル シリアル バス 4 (USB4™): USB4 をサポートする Windows システムを開発する OEM、IHV、シリコンのベンダーに USB4 接続マネージャーに関する情報を提供し、デバッグと立ち上げの手順を円滑にします。

  • USB に関する FAQ: USB スタックと USB でサポートされている機能について、ドライバー開発者からよく寄せられる質問です。

  • USB デバイスの Microsoft OS 記述子: Windows では、Windows オペレーティング システムを実行しているシステムに接続したときに、より適切に列挙できる MS OS 記述子が定義されています。

開発ツール

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 のサポートが導入されています。 マイクロソフトが提供するクラス拡張モジュール UcmCx と通信するコネクタのドライバーを作成して、どのポートが Type-C をサポートするか、どのポートが電力供給をサポートするかなど、Type-C コネクタに関連するシナリオを処理できます。

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

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

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

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

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

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

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

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

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

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

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

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

UWP アプリを記述する

  • USB デバイスとの対話の概要: UWP アプリに USB 機能を実装する手順について説明します。 USB デバイスにそのようなアプリを記述するには、Visual Studio と Microsoft Windows Software Development Kit (SDK) が必要です。

  • Windows.Devices.Usb: 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 オンライン ストアからラーニング キットを入手できます。

マイクロソフトが提供する USB ドライバーの詳細

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

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

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

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

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