次の方法で共有


記憶域クラス ドライバーの概要

記憶域クラス ドライバーは、確立された SCSI クラス/ポート インターフェイスを使用して、システムが記憶域ポート ドライバー (現在 SCSI、IDE、USB、IEEE 1394) を提供する任意のバスで、その種類の大容量記憶装置を制御します。 ストレージ デバイスが接続されている特定のバスは、ストレージ クラス ドライバーに対して透過的です。

すべてのストレージ クラス ドライバーは、コマンド記述子ブロック (CDN) を含む SCSI 要求ブロック (SRB) を構築し、介在するフィルター ドライバーを介して基になる記憶域ポート ドライバーに送信することで、ユーザー アプリケーションまたは上位レベルのドライバーからの I/O 要求を処理します。

ストレージ クラス ドライバーは、SRB のアドレス指定情報を提供しません。 代わりに、ポート ドライバー (または下位ドライバー) が、必要なアドレス指定を担当します。 記憶域ポート ドライバーは、基になるホスト バス アダプター (HBA) で必要な形式に SRB を変換します。これは、SCSI または 1394 ホスト バス アダプター、IDE コントローラー、またはその他のハードウェアである可能性があり、デバイスにコマンドを発行します。 Windows Driver Kit (WDK) では、"HBA" という用語は、このような基になるアダプターまたはコントローラーを表します。

I/O マネージャーと、記憶域クラス ドライバーの上に階層化された上位レベルのドライバーには、ほとんどの記憶域クラス ドライバーは、標準カーネル モードの中間ドライバーです。 したがって、すべてのクラス ドライバーには、プラグ アンド プレイと電源 IRP を処理するための DriverEntry ルーチン、 AddDevice ルーチン、 アンロード ルーチン、1 つ以上の IoCompletion ルーチン、 DispatchPnP および DispatchPower ルーチンが必要です。

記憶域クラス ドライバーには、システム制御 IRP を処理する DispatchSystemControl ルーチンも必要です。また、ドライバー デザイナーによって決定された他の標準の上位レベルドライバー ルーチン ( StartIo ルーチンなど) を使用することもできます。 システム制御および標準カーネル モード ドライバー ルーチンの詳細については、「 標準ドライバー ルーチン」を参照してください。

PnP マネージャーから見ると、記憶域クラス ドライバーは関数ドライバー、つまり、個々のデバイスを制御します。 記憶域クラス ドライバーは、そのデバイスの子デバイスを列挙する バス ドライバーとして機能することもできます。 たとえば、ディスクなどのパーティション分割されたメディア デバイスのクラス ドライバーは、そのパーティションを表す PDO の一覧を返します。 このような各 PDO は、ターゲット デバイスとしてアドレス指定でき、独自のクラス ドライバーによって処理されます。

このセクションの説明に従って、プリンターやスキャナーなどの SCSI デバイスのドライバーを実装する必要があります。 このような SCSI デバイスのドライバーは、同じ SCSI クラス/ポート インターフェイスを使用してそのデバイスを制御し、IRP を処理し、SRB をビルドし、記憶域デバイスのドライバーと同様に、基になるポート ドライバーに送信するのと同じ役割を持ちます。