ストレージ ドライバーとデバイス オブジェクトについて
ストレージ デバイス スタックは、システム上のストレージ デバイスへの I/O の処理に関連するドライバーによって作成されたデバイス オブジェクトのツリーで構成されます。 このツリーのルートは、ストレージ アダプターまたはスタックと統合された別のドライバー スタックの機能デバイス オブジェクト (FDO) です。 このツリーの葉は、ファイル システムおよびユーザー モード アプリケーションで使用されるデバイス オブジェクトです。
他の PnP ドライバーと同様に、クラス ドライバーまたはフィルター ドライバーは、IoCreateDevice を使用してデバイス オブジェクトを作成し、初期化時に PnP マネージャーによってドライバーの AddDevice ルーチンに渡されたデバイス オブジェクトへのポインターを使用して、IoAttachDeviceToDeviceStack を使用してデバイス スタックにアタッチすることで、AddDevice ルーチンのツリーに自身を追加します。 IoAttachDeviceToDeviceStack は、新しいデバイス オブジェクトをデバイス スタックの現在の最上位にアタッチします。
デバイス オブジェクトを作成してデバイス スタックに接続するために、テープ ミニクラス、中チェンジャー ミニクラス、または SCSI ミニポート ドライバーは必要ありません。 システム提供のテープ クラス、チェンジャー クラス、または SCSI ポート ドライバーが、ミニクラス/ミニポートの代わりにこれらのタスクを処理し、デバイス オブジェクトの作成に必要なデータを収集するためにミニクラス/ミニポート ドライバー ルーチンを呼び出します。
ストレージ ポート ドライバーは、FILE_DEVICE_MASS_STORAGE の種類の物理デバイス オブジェクト (PDO) を作成します。 ディスク クラス、CD-ROM クラス、テープ クラス、およびチェンジャー クラス ドライバーは、それぞれ FILE_DEVICE_DISK、FILE_DEVICE_CD_ROM、FILE_DEVICE_TAPE、および FILE_DEVICE_CHANGER の種類の FDO を作成します。
PnP ドライバーの設計については、PnP ドライバーの設計ガイドラインを参照してください。 PnP 関連の IoXxx ルーチンについては、プラグ アンド プレイ ルーチンを参照してください。