次の方法で共有


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

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

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

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

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

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

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

Note

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