Freigeben über


IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL (ntddscsi.h)

Die IOCTL_MPIO_PASS_THROUGH_PATH_EX-Steuerelementcodeanforderung ist die erweiterte Version der IOCTL_MPIO_PASS_THROUGH_PATH Anforderung. Diese Anforderung bietet Unterstützung für bidirektionale Datenübertragungen und lässt einen Befehlsdatenblock (CDB) > mit 16 Bytes zu.

Dieser E/A-Steuerungscode ermöglicht es einem Anwendungs- oder Kerneltreiber, einen SCSI-Befehl an eine festgelegte echte LUN zu senden. Für die Verwendung dieses E/A-Steuerungscodes gelten die folgenden Einschränkungen:

  • Wenn ein Klassentreiber für die Pseudo-LUN vorhanden ist, muss die Anwendung die Anforderung an diesen Klassentreiber senden. Daher kann eine Anwendung diese Anforderung nur direkt an MPIO senden, wenn kein Klassentreiber für das Gerät vorhanden ist.
  • Alle Passthroughanforderungen müssen synchron sein.
  • Anwendungen benötigen keine Administratorrechte, um eine Passthrough-Anforderung an ein Gerät zu senden, aber sie müssen Lese-/Schreibzugriff auf das Gerät haben.
  • Die Anforderung umfasst eine SCSI-Passthroughanforderung (in einer eingebetteten SCSI_PASS_THROUGH_EX-Struktur ) sowie bestimmte Anweisungen.
  • Die SCSI-Passthrough-Struktur sollte die Anforderungen dafür erfüllen, wie unter SCSI_PASS_THROUGH_EX beschrieben.
  • Wenn die Anforderung über den DSM gesendet werden soll, der die echte LUN beansprucht hat, muss dies angegeben werden. In einem solchen Fall muss der DSM selbst die gleiche reale LUN angeben. Andernfalls schlägt die Anforderung fehl.
  • Die Anforderung muss die echte LUN angeben, die von der Pseudo-LUN in Bezug auf die SCSI-Adresse oder die MPIO-PathId des Ersteren besteht, aber nicht beides.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Puffers in Bytes bei Irp-AssociatedIrp.SystemBuffer> an.

Eingabepufferlänge

Der Puffer muss mindestens sizeof(MPIO_PASS_THROUGH_PATH_EX) oder, wenn von einer 32-Bit-Anwendung in einem 64-Bit-Betriebssystem gesendet wird, sizeof(MPIO_PASS_THROUGH_PATH32_EX) sein.

Ausgabepuffer

Der Porttreiber gibt alle Anforderungssinnsdaten und alle Daten zurück, die vom Gerät an den Puffer von Irp-AssociatedIrp.SystemBuffer> übertragen werden.

Länge des Ausgabepuffers

Die Elemente SenseInfoLength und DataOutTransferLength in der eingebetteten SCSI_PASS_THROUGH_EX Struktur werden aktualisiert, um die Übertragene Datenmenge anzugeben.

Statusblock

Das Feld Information ist auf die Anzahl der Bytes festgelegt, die im Ausgabepuffer bei Irp-AssociatedIrp.SystemBuffer> zurückgegeben werden. Das Feld Status ist auf STATUS_SUCCESS oder möglicherweise auf STATUS_BUFFER_TOO_SMALL oder STATUS_INVALID_PARAMETER festgelegt, wenn der Eingabelängenwert im eingebetteten SCSI_PASS_THROUGH_EX nicht ordnungsgemäß festgelegt ist.

Anforderungen

Anforderung Wert
Header ntddscsi.h (include Ntddscsi.h)

Weitere Informationen

MPIO_PASS_THROUGH_PATH_EX

SCSI_PASS_THROUGH_EX