次の方法で共有


SPB コントローラー ドライバーの概要

SPB コントローラーは、 単純な周辺機器バス (SPB) を制御し、SPB に接続されている周辺機器との間でデータを転送するデバイスです。 SPB コントローラーのハードウェア ベンダーは、コントローラーのハードウェア機能を管理するための SPB コントローラー ドライバーを提供します。

Windows 8 以降、SPB フレームワーク拡張機能 (SpbCx) は 、単純な周辺機器バス (SPB) 用のコントローラー ドライバーの開発を簡略化します。 SpbCx は、 Kernel-Mode Driver Framework (KMDF) に対するシステム提供の拡張機能です。 SPB コントローラー デバイスのハードウェア ベンダーは、ハードウェア固有のすべてのドライバー操作を実行するコントローラー ドライバーを提供します。 このドライバーは SpbCx と通信して SPB コントローラーに固有の操作を実行し、KMDF と直接通信して汎用ドライバー操作を実行します。

たとえば、SPB コントローラー ドライバーは通常、KMDF の WdfDeviceInitSetPnpPowerEventCallbacks メソッドを呼び出して電源イベント コールバックを受信するために登録し、 WdfInterruptCreate メソッドを呼び出してドライバーの割り込みサービス ルーチン (ISR) を SPB コントローラーからの割り込みに接続します。 SPB 固有の操作を実行するために、SPB コントローラーは SpbCx デバイス ドライバー インターフェイス (DDI) を介して SpbCx と通信します。

SpbCx は、SBP コントローラー ドライバーと連携して、SPB に接続されている周辺機器の I/O 要求を処理します。 SpbCx は、SPB コントローラー ドライバーに共通する処理タスクを実行します。 これらのタスクには、SPB コントローラーの I/O 要求キューの管理が含まれます。 これらのキューには、バスに接続されている周辺機器を管理するドライバーからの I/O 要求が含まれています。 SPB コントローラー ドライバーは、これらの要求を処理するために必要なすべてのハードウェア固有の操作を実行します。

次の図は、SPB コントローラー ドライバーと SpbCx を示しています。

spb コンポーネントのブロック図。

SPB コントローラー ドライバーと SpbCx はどちらもカーネル モードで実行され、SpbCx DDI を介して相互に通信します。 SPB コントローラー ドライバーは、SpbCx によって実装されるドライバー サポート メソッドを呼び出します。 SpbCx は、SPB コントローラー ドライバーによって実装されるイベント コールバック関数を呼び出します。

SPB コントローラーに I/O 要求を送信するドライバーは、 Kernel-Mode Driver Framework (KMDF) を使用するカーネル モード ドライバーか、 User-Mode Driver Framework (UMDF) を使用するユーザー モード ドライバーです。 これらのドライバーは、SPB に接続された周辺機器との間でデータを転送する読み取りおよび書き込み要求を送信できます。 さらに、ドライバーは、SPB 固有の操作を実行する I/O 制御 (IOCTL) 要求を送信できます。

SPB コントローラー ドライバーは、SPB コントローラー デバイスのハードウェア レジスタに直接アクセスして、SPB に接続されている周辺機器との間でデータ転送を開始します。 I2C などの SPB の場合、これらのデータ転送は比較的低速で行われます。 SPB コントローラーのハードウェア レジスタはメモリ マップされる可能性がありますが、周辺機器のレジスタには SPB を介して順次アクセスする必要があります。

SPB に接続された周辺機器との間でデータを転送する I/O 要求に応答して、SPB コントローラー ドライバーはバス転送を開始し、I/O 要求を保留中としてマークし、転送が完了するのを待たずに戻ります。 その後、SPB コントローラー ハードウェアが転送を完了すると、コントローラーは割り込みを通知し、SPB コントローラー ドライバーの ISR は保留中の I/O 要求を完了するか、要求された I/O 操作で次の転送を開始します。

ドライバーのみが、SPB コントローラーに直接 I/O 要求を送信できます。 ユーザー モード アプリケーションが SPB に接続された周辺機器との間でデータを転送する場合、アプリケーションは SPB 周辺機器ドライバーに依存して、対応する読み取りまたは書き込み要求を SPB コントローラーに送信する必要があります。