次の方法で共有


IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL (ntddscsi.h)

IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX制御コード要求は、IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT要求の拡張バージョンです。 この要求では、双方向データ転送がサポートされ、コマンド データ ブロック (CDB) > は 16 バイトになります。

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

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

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

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

入力バッファーの長さ

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

出力バッファー

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

出力バッファーの長さ

埋め込みSCSI_PASS_THROUGH_DIRECT_EX構造体の SenseInfoLengthDataOutTransferLength が更新され、転送されるデータの量が示されます。

ステータス ブロック

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

要件

要件
Header ntddscsi.h (Ntddscsi.h を含む)

こちらもご覧ください

MPIO_PASS_THROUGH_PATH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT_EX