SPB フレームワーク拡張機能 (SpbCx)
Windows 8 以降、SPB フレームワーク拡張機能 (SpbCx) は、カーネル モード ドライバー フレームワーク (KMDF) 向けにシステムが提供する拡張機能です。 SpbCx は、SPB コントローラー ドライバーと連携して、I²C や SPI などの単純な周辺機器バス (SPB) に接続されている周辺機器で I/O 操作を実行します。
SPB コントローラー ドライバーは、ハードウェア固有のすべての操作を実行します。 これらの操作には、SPB コントローラーのハードウェア レジスタにアクセスしてコントローラーを構成し、SPB に接続された周辺機器との間でバス転送を開始することが含まれています。
SpbCx は、SPB コントローラー デバイスに共通する処理タスクを実行します。 特に、SpbCx は SPB コントローラーの I/O 要求キューを管理します。 これらのキューには、バスに接続されている周辺機器の I/O 要求が含まれています。 SPB コントローラーのハードウェア ベンダーは、これらの要求を処理するのに必要なすべてのハードウェア固有の操作を実行する SPB コントローラー ドライバーを提供します。
SpbCx と SPB コントローラー ドライバーの間の責任の分担は次のとおりです。
SpbCx は、SPB コントローラー デバイス クラスのすべてのメンバーに共通するジェネリック関数を管理します。 SpbCx は、コントローラー ドライバーの既定の要求処理とフロー制御の多くを提供します。 Windows 8 以降、SpbCx は Windows オペレーティング システムの受信トレイ コンポーネントです。
SPB コントローラー ドライバーは、SPB コントローラー デバイスのハードウェア固有の機能を管理します。 ハードウェア ベンダーは、SPB コントローラー デバイス用のコントローラー ドライバーを提供します。
SpbCx と SPB コントローラー ドライバーは、カーネル モードで実行されます。 SpbCx はフレームワーク拡張機能であり、SPB コントローラー ドライバーは KMDF ドライバーです。 SPB コントローラー ドライバーは、SpbCx デバイス ドライバー インターフェイス (DDI) 内のメソッドを呼び出して SPB 固有の操作を実行し、KMDF メソッドを呼び出してより汎用的な他のドライバー関数を実行します。 KMDF ドライバーのビルドの詳細については、「フレームワーク ベースのドライバーの構築と読み込み」を参照してください。
SPB コントローラー ドライバーは、SpbCx スタブ ライブラリである Spbcx.lib 内の DDI エントリ ポイントに静的にリンクします。 実行時に、このライブラリは、DDI を実装するフレームワーク拡張モジュール (Spbcx.sys) に動的にリンクするのに必要なドライバー バージョン ネゴシエーションを実行します。 特定のバージョンの Spbcx.sys を必要とする SPB コントローラー ドライバーは、より大きいバージョン番号を持つ Spbcx.sys のバージョンに安全にリンクできます。 ただし、このドライバーは、バージョン番号が小さい Spbcx.sys のバージョンにリンクできません。 SpbCx I/O 要求インターフェイスも同様に下位互換性があります。
ハードウェア ベンダーには、SpbCx を使用しないモノリシック SPB コントローラー ドライバーを記述するオプションがありますが、これを行うにはかなりの労力が必要です。 これに対して、SpbCx を使用するコントローラー ドライバーは開発が容易で、通常は信頼性が高くなります。