IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT IOCTL (ntddscsi.h)
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 eine 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_DIRECT-Struktur ) sowie bestimmte Anweisungen.
- Die SCSI-Passthrough-Struktur sollte die Anforderungen dafür erfüllen, wie unter SCSI_PASS_THROUGH_DIRECT 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
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) oder, wenn von einer 32-Bit-Anwendung in einem 64-Bit-Betriebssystem gesendet wird, sizeof(MPIO_PASS_THROUGH_PATH32) 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
SenseInfoLength und DataTransferLength in der eingebetteten SCSI_PASS_THROUGH_DIRECT-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_DIRECT nicht ordnungsgemäß festgelegt ist.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddscsi.h (include Ntddscsi.h) |