SCSI パススルー要求を使用したクラス ドライバーのバイパス

ほとんどの場合、クラス ドライバーは、SCSI Port と上位レベルのドライバーとアプリケーション間のすべての通信を仲介します。 ただし、一部のターゲット デバイスにはクラス ドライバーがありません。 このようなデバイスのドライバーは、"パススルー" 要求と呼ばれる要求のクラスを使用して、SCSI Port と直接通信する必要があります。 パススルー要求を使用するには、上位レベルのコンポーネントが、クラス ドライバーに依存するのではなく、要求で使用される CDB を設定する必要があります。

SCSI パススルー要求は、IOCTL_SCSI_PASS_THROUGH または IOCTL_SCSI_PASS_THROUGH_DIRECTの IOCTL コードを持つ IRP_MJ_DEVICE_CONTROL 型の IRP で構成されます。 要求がクラス ドライバーを通過する場合、クラス ドライバーは IRP の MinorFunction コードを IRP_MJ_DEVICE_CONTROL に設定する必要があります。 SCSI Port は、この値を確認して、パススルー要求がクラス ドライバーをバイパスしたかどうかを判断します。 ターゲット デバイスが記憶域クラス ドライバーによって要求された場合、SCSI Port にパススルー要求を直接送信することは、アプリケーション エラーです。

SCSI Port は、パススルー要求に埋め込まれている SCSI コマンドの有効性をチェックしません。

記憶域クラス ドライバーの観点からの SCSI パススルー要求の詳細については、「SCSI パススルー要求の処理」を参照してください。