USB クライアント ドライバー開発の最初の手順
このセクションでは、USB ドライバー開発の概念とツールについて説明します。 このセクションは、Microsoft がインボックス ドライバーを提供していない USB デバイス用のドライバーを実装したいドライバー開発の初心者である開発者に適用されます。 これらのドライバーは、このドキュメントでは USB クライアント ドライバーと呼ばれます。 このセクションのトピックでは、高レベルの USB 概念について説明し、USB クライアント ドライバーの一般的なタスクの実行について段階的な手順を説明します。 これらの概念の詳細については、USB ドキュメントの USB 仕様を参照してください。
ドライバー開発者は、C++ プログラミング言語でのコーディング経験を持ち、関数ポインター、コールバック関数、およびイベント ハンドラーの概念を理解している必要があります。 ユーザーモード ドライバー フレームワークに基づいてドライバーを作成する場合、開発者は 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 クライアント ドライバー開発のためのドライバー モデルの選択
- ターゲット デバイスの設計に基づいて、ドライバーをカスタム ドライバーにするか、マイクロソフトが提供するドライバーのいずれかを使用するかを決定します。 最適なドライバー モデルを選択し、各モデルでサポートされている機能について説明します。
マイクロソフトが提供する USB ドライバー スタックとドライバー開発の概念を確認します。
- Windows の USB ホスト側ドライバー。
- すべてのドライバー開発者のための概念。
- すべての USB 開発者のための概念.
- デバイス ノードとデバイス スタック。
- Windows Driver Foundation を使用したドライバーの開発、Penny Orwick および Guy Smith で作成。 詳細については、「WDF を使用したドライバーの開発」を参照してください。
- USB ドライバーのサンプル。
- Windows オペレーティング システムでドライバーがどのように動作するかの基本を理解します。 基本を理解することは、適切な設計上の決定を下し、開発プロセスを合理化するのに役立ちます。
- ユーザー モードとカーネル モード ドライバー アーキテクチャ モデルを区別します。
- ドライバーの読み込みと、Windows がデバイス ツリーとデバイス ノードでプラグ アンド プレイ (PnP) デバイスを編成する方法を理解します。 開発者は、PnP マネージャーがデバイス スタックを構築する方法と、ドライバーとそのデバイス オブジェクトがデバイス スタック内のどこに配置されるかについても理解する必要があります。
開発環境とデバッグ環境を準備します。
- 最新の Windows Driver Kit (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 コア チーム ブログ
Microsoft USB チームが記述した投稿をご覧ください。 このブログでは、Windows PC に搭載されたさまざまな USB ホスト コントローラーや USB ハブと連動する Windows USB ドライバー スタックを中心に取り上げています。 USB クライアント ドライバーの開発者や USB ハードウェアのデザイナーがドライバー スタック実装を理解し、一般的な問題を解決し、ツールを利用してトレースとログ ファイルを集める方法を説明する際に役立つリソース。
-
カーネルモード ドライバーの開発者のための OSR オンラインによって管理されるディスカッション リスト。
ハードウェア開発のための Windows Dev-Center
Windows Driver Kit では、Windows ハードウェア ラボ キットを通じて製品の信頼性が高く、Windows と互換性があることを確認します。Windows ドライバーのサンプルについて説明します。