共用方式為


IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT IOCTL (ntddscsi.h)

此 I/O 控制程式碼可讓應用程式或核心驅動程式將 SCSI 命令傳送至指定的實際 LUN。 下列限制適用於使用此 I/O 控制項程式代碼:

  • 如果虛擬 LUN 的類別驅動程式存在,應用程式必須將要求傳送至該類別驅動程式。 因此,應用程式只有在沒有裝置的類別驅動程式時,才能將此要求直接傳送至 MPIO。
  • 所有傳遞要求都必須是同步的。
  • 應用程式不需要系統管理許可權,才能將傳遞要求傳送至裝置,但必須具有裝置的讀取/寫入許可權。
  • 要求包含 SCSI 傳遞要求(內嵌 SCSI_PASS_THROUGH_DIRECT 結構中),以及特定指示詞。
  • SCSI 傳遞結構應該符合這類的需求,如 SCSI_PASS_THROUGH_DIRECT中所述。
  • 如果要透過宣告實際 LUN 的 DSM 傳送要求,則必須指出該要求。 在這種情況下,DSM 本身必須指出相同的實際 LUN。 否則,要求將會失敗。
  • 要求必須以先前的 SCSI 位址或其 MPIO PathId來指定虛擬 LUN 所組成的實際 LUN,但不能同時由這兩者組成。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

Parameters.DeviceIoControl.InputBufferLength 會指出 Irp->AssociatedIrp.SystemBuffer緩衝區的大小,以位元組為單位。

輸入緩衝區長度

緩衝區至少必須是 sizeof(MPIO_PASS_THROUGH_PATH),或者,如果 32 位應用程式在 64 位作系統中傳送,sizeof(MPIO_PASS_THROUGH_PATH32)。

輸出緩衝區

連接埠驅動程式會傳回任何要求感知數據,以及從裝置傳輸到緩衝區的任何數據,Irp->AssociatedIrp.SystemBuffer

輸出緩衝區長度

內嵌 SCSI_PASS_THROUGH_DIRECT 結構中的 SenseInfoLengthDataTransferLength 會更新,以指出傳輸的數據量。

狀態區塊

Information 位元段會設定為 Irp->AssociatedIrp.SystemBuffer 輸出緩衝區中所傳回的位元組數目。 [狀態] 字段會設定為 [STATUS_SUCCESS],或者如果未正確設定內嵌 SCSI_PASS_THROUGH_DIRECT 中的輸入 Length 值,則設定為STATUS_BUFFER_TOO_SMALL或STATUS_INVALID_PARAMETER。

要求

要求 價值
標頭 ntddscsi.h (包括 Ntddscsi.h)

另請參閱

MPIO_PASS_THROUGH_PATH_DIRECT

SCSI_PASS_THROUGH_DIRECT