次の方法で共有


IOCTL_MPIO_PASS_THROUGH_PATH IOCTL (ntddscsi.h)

この I/O 制御コードを使用すると、アプリケーションまたはカーネル ドライバーは、指定された実際の LUN に SCSI コマンドを送信できます。 この I/O 制御コードの使用には、次の制限が適用されます。

  • 擬似 LUN のクラス ドライバーが存在する場合、アプリケーションはそのクラス ドライバーに要求を送信する必要があります。 したがって、アプリケーションは、デバイスのクラス ドライバーがない場合にのみ、MPIO に直接この要求を送信できます。
  • すべてのパススルー要求は同期である必要があります。
  • アプリケーションは、パススルー要求をデバイスに送信するために管理特権を必要としませんが、デバイスへの読み取り/書き込みアクセス権を持っている必要があります。
  • 要求は、(埋め込み SCSI_PASS_THROUGH 構造体内の) SCSI パススルー要求と特定のディレクティブで構成されます。
  • SCSI パススルー構造は、SCSI_PASS_THROUGHで説明されているように、このような要件を満たしている必要があります。
  • 実際の LUN を要求した DSM を介して要求を送信する場合は、指定する必要があります。 このような場合、DSM 自体は同じ実際の LUN を示す必要があります。 それ以外の場合、要求は失敗します。
  • 要求では、前者の SCSI アドレスまたはその MPIO PathIdの観点から、擬似 LUN で構成される実際の LUN を指定する必要がありますが、両方を指定することはできません。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

Parameters.DeviceIoControl.InputBufferLength は、Irp->AssociatedIrp.SystemBuffer のバッファーのサイズバイト単位で示します。

入力バッファーの長さ

バッファーは、少なくとも sizeof(MPIO_PASS_THROUGH_PATH) である必要があります。または、64 ビット オペレーティング システムで 32 ビット アプリケーションによって送信される場合は、sizeof(MPIO_PASS_THROUGH_PATH32)。

出力バッファー

ポート ドライバーは、要求検出データと、デバイスからバッファーに転送されるすべてのデータ Irp->AssociatedIrp.SystemBufferを返します。

出力バッファーの長さ

埋め込みSCSI_PASS_THROUGH構造体の SenseInfoLength および dataTransferLength メンバーが更新され、転送されるデータの量が示されます。

状態ブロック

情報 フィールドは、Irp->AssociatedIrp.SystemBufferで出力バッファーに返されるバイト数に設定されます。 状態 フィールドはSTATUS_SUCCESSに設定されます。埋め込み SCSI_PASS_THROUGH の入力 値が正しく設定されていない場合は、STATUS_BUFFER_TOO_SMALLまたはSTATUS_INVALID_PARAMETER可能性があります。

必要条件

要件 価値
ヘッダー ntddscsi.h (Ntddscsi.h を含む)

関連項目

MPIO_PASS_THROUGH_PATH

SCSI_PASS_THROUGH