このセクションでは、USB ドライバー開発の概念とツールについて説明します。 このセクションは、Microsoft がインボックス ドライバーを提供していない USB デバイスのドライバーを実装するドライバー開発に初めて使用する開発者に適用されます。 これらのドライバーは、このドキュメントでは USB クライアント ドライバー と呼ばれます。 このセクションのトピックでは、USB の概念の概要について説明し、USB クライアント ドライバーの一般的なタスクの実行に関する詳細な手順を説明します。 これらの概念の詳細については、 USB ドキュメントの USB 仕様を参照してください。
ドライバー開発者は、C++ プログラミング言語でのコーディング経験を持ち、 関数ポインター、 コールバック関数、 およびイベント ハンドラーの概念を理解している必要があります。 User-Mode Driver Framework に基づいてドライバーを記述する場合、開発者は C++ と COM に精通している必要があります。
USB クライアント ドライバー開発者向けのラーニング パス
USB 仕様 3.2 を読み取る。
- アーキテクチャの業界仕様とさまざまなコンポーネント (デバイス、ホスト コントローラー、ハブ) について説明します。 データ フロー モデル、ホストとデバイスが相互に通信する方法、およびデバイスが期待する要求の形式を理解することが重要です。
テスト用 USB デバイスを取得します。
USB デバイスとそのハードウェア仕様を用意します。 この仕様では、デバイスの機能とサポートされているベンダー コマンドについて説明します。 この仕様を使用して、デバイス ドライバーの機能と、関連する設計上の決定を決定します。
USB ドライバー開発に初めて使用する場合は、 OSR USB FX2 学習キット を用意してください。 このキットは、このドキュメント セットに含まれる USB サンプルを調査するのに最適です。
Microsoft USB テスト ツール (MUTT) デバイスを持っている。 MUTT ハードウェアは 、JJG Technologies から購入できます。 デバイスにファームウェアがインストールされていません。 ファームウェアをインストールするには、 MUTT ソフトウェア パッケージをダウンロードします。 詳細については、パッケージに含まれているドキュメントを参照してください。
USB デバイスのレイアウトと関連する USB 記述子について学習します。
- 構成記述子、サポートされている各代替設定のインターフェイス記述子、およびそのエンドポイント記述子を読み取って、デバイスの機能について説明します。 開発者は 、USBView を使用して、すべての USB コントローラーと接続されている USB デバイスを参照し、デバイスの構成を調べることができます。
USB クライアント ドライバーを開発するためのドライバー モデルを選択する
- ドライバーがカスタム ドライバーである必要があるかどうかを判断するか、ターゲット デバイスの設計に基づいて Microsoft が提供するドライバーのいずれかを使用します。 最適なドライバー モデルを選択し、各モデルでサポートされる機能について説明します。
Microsoft が提供する USB ドライバー スタックとドライバー開発の概念を確認します。
- Windows の USB ホスト側ドライバー。
- すべてのドライバー開発者向けの概念。
- すべての USB 開発者向けの概念。
- デバイス ノードとデバイス スタック。
- Windows Driver Foundation を使用したドライバーの開発: Peny Orwick と Guy Smith によるリファレンス ブック。
- USB ドライバーのサンプル。
- Windows オペレーティング システムでのドライバーの動作の基礎について説明します。 基礎を知ることは、適切な設計上の決定を行い、開発プロセスを合理化するのに役立ちます。
- ユーザー モードとカーネル モード ドライバー アーキテクチャ モデルを区別します。
- ドライバーの読み込みと、Windows がデバイス ツリーとデバイス ノードでプラグ アンド プレイ (PnP) デバイスを整理する方法について説明します。 開発者は、PnP マネージャーがデバイス スタックをビルドする方法と、ドライバーとそのデバイス オブジェクトがデバイス スタック内のどこに配置されるかについても理解する必要があります。
開発環境とデバッグ環境を準備します。
- 最新の Windows ドライバー キット (WDK) をインストールします。
- Microsoft Visual Studio をインストールします。
- デバッグの設定を取得します。
- USB クライアント ドライバーに必要なヘッダーとライブラリが使用可能であることを確認します。
- ホストおよびターゲット コンピューターでイーサネット ネットワーク経由でカーネル モード ドライバー デバッグを記述する場合は、1394 ケーブル、USB 2.0 または 3.0 デバッグ ケーブル、または null モデム ケーブルを構成する必要があります。
- ユーザー モード ドライバーを記述する場合は、Microsoft Visual Studio 環境でユーザー モード デバッガーを使用できます。 開発者は、 プロセスにアタッチする方法、またはデバッガーでプロセスを起動する方法を理解している必要があります。
最初のドライバーを作成します。
- 最初の USB クライアント ドライバー (KMDF) を記述する方法。
- 最初の USB クライアント ドライバー (UMDF) を記述する方法。
- Visual Studio 2012 に含まれている USB テンプレートを使用して、最初の USB クライアント ドライバーを作成、ビルド、インストールします。 開発者は、フレームワーク ドライバー、デバイス、キュー オブジェクトを記述し、フレームワークがドライバーと通信する方法を理解できる必要があります。
USB コントロール転送要求を送信してドライバーを拡張します。
- 標準の制御要求とベンダー コマンドをデバイスに送信します。 詳細については、「 USB コントロール転送を送信する方法」を参照してください。
WDF USB I/O ターゲット オブジェクトを使用して USB データ転送を実行するようにドライバーを拡張します。
- USB クライアント ドライバーの一般的なタスクで説明されているように、ドライバーを拡張 して一般的なタスクを実行します。
USB 用コミュニティ リソース
Microsoft Windows USB Core チーム ブログ
Microsoft USB チームによって書かれた投稿を確認します。 このブログでは、Windows PC で見つかったさまざまな USB ホスト コントローラーと USB ハブで動作する Windows USB ドライバー スタックに焦点を当てています。 USB クライアント ドライバー開発者と USB ハードウェア デザイナーにとって便利なリソースは、ドライバー スタックの実装を理解し、一般的な問題を解決し、トレースとログ ファイルを収集するためのツールを使用する方法を説明します。
-
カーネル モード ドライバー開発者向けに OSR Online によって管理されるディスカッション リスト。
-
Windows Driver Kit では、Windows ハードウェア ラボ キットを通じて製品が信頼性が高く、Windows と互換性があることを確認します。 Windows ドライバーのサンプルについて説明します。