USB ファンクション コントローラー用 Windows ドライバー開発の概要

この記事では、Microsoft が提供する USB ファンクション コントローラー拡張機能 (UFX) と通信するユニバーサル シリアル バス (USB) ファンクション コントローラー ドライバーを開発するための、Windows オペレーティング システムでのサポートについて説明します。

開発ツールと Microsoft 提供するバイナリ

Windows Driver Kit (WDK) には、ヘッダー、ライブラリ、ツール、サンプルなど、ドライバーの開発に必要なリソースが含まれています。

Windows 用のキットとツールのダウンロード

Windows では、Synopsys IP のコントローラー ハードウェア用に、UfxSynopsys.sys などのインボックス USB ファンクション コントローラー ドライバーが用意されています。 これらを使用するには通常、プラットフォーム レベルの変更と検証が必要ですが、その作業は、プラットフォームの起動時にハードウェア パートナーまたは OEM によって実行されることが一般的です。 この起動プロセスには、USB のアタッチ/デタッチ イベントをシステム ドライバーに通知する ACPI との統合や、Microsoft が提供する HLK テストを使用した追加の検証の実行が含まれる場合があります。 独自のコントローラー ドライバーを作成するには、以下が必要になります。

  • FDO として読み込まれた UFX (Ufx01000.sys)。 このドライバーは Windows に含まれています。
  • スタブ ライブラリ (Ufx01000.lib) へのリンク。 スタブ ライブラリは WDK にあります。 このライブラリは、ファンクション コントローラー ドライバーによって行われた呼び出しを変換し、UFX に渡します。
  • WDK で提供される Ufxclient.h のインクルード。

ユーザー モードから要求を送信するには、以下が必要になります。

  • USB ファンクション クラス ドライバーとして読み込まれた GenericUSBFn.sys。 このドライバーは Windows に含まれています。
  • WDK で提供される Genericusbfnioctl.h のインクルード。

USB クラス ドライバーから要求を送信するには、以下が必要になります。

  • FDO として読み込まれた UFX (Ufx01000.sys)。 このドライバーは Windows に含まれています。
  • WDK で提供される Usbfnioctl.h のインクルード。

独自の充電器による充電を処理するフィルター ドライバーを作成するには、以下が必要になります。

  • クライアント ドライバーとして UFX に読み込まれた Either UfxChipidea.sys または Ufxsynopsys.sys。
  • WDK で提供される Ufxproprietarycharger.h のインクルード。

UFX のアーキテクチャ

Microsoft 提供の USB ドライバー スタックについて理解しましょう。

Windows の USB デバイス側ドライバー

UFX オブジェクトとハンドルについて理解する

UFX は、WDF オブジェクト機能を拡張して、独自の USB 固有の UCX オブジェクトを定義します。 WDF オブジェクトの詳細については、「フレームワーク オブジェクトの概要」を参照してください。

要求をキューイングするために、UFX では USB 固有のオブジェクトが使用されます。 詳細については、USB ファンクション クライアント ドライバーで使用される UFX オブジェクトとハンドルに関する記事を参照してください。

ファンクション コントローラー クライアント ドライバーの作成

UFX の動作およびクライアント ドライバーとの対話方法や、クライアント ドライバーへの実装が必要な機能について理解する必要があります。

ファンクション コントローラー クライアント ドライバーのタスク

プログラミング リファレンス セクション

USB ファンクション クラス ドライバー - UFX プログラミング リファレンス

USB ファンクション コントローラー クライアント ドライバー プログラミング リファレンス

独自の充電器サポート用の USB フィルター ドライバー