IOCTL_MPIO_PASS_THROUGH_PATH IOCTL (ntddscsi.h)
Dieser E/A-Steuerungscode ermöglicht es einer Anwendung oder einem Kerneltreiber, einen SCSI-Befehl an eine bestimmte echte LUN zu senden. Die folgenden Einschränkungen gelten für die Verwendung dieses E/A-Steuerungscodes:
- 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 erfordern 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-Passthrough-Anforderung (in einer eingebetteten SCSI_PASS_THROUGH-Struktur ) sowie bestimmte Direktiven.
- Die SCSI-Passthrough-Struktur sollte die Anforderungen für diese erfüllen, wie in SCSI_PASS_THROUGH beschrieben.
- Wenn die Anforderung über den DSM gesendet werden soll, der die echte LUN in Anspruch genommen hat, muss dies angegeben werden. In einem solchen Fall muss die DSM selbst die gleiche reale LUN angeben. Andernfalls schlägt die Anforderung fehl.
- Die Anforderung muss die tatsächliche LUN angeben, die von der Pseudo-LUN in Bezug auf die SCSI-Adresse oder die MPIO-PathId des Ersteren besteht, aber nicht beide.
Hauptcode
Eingabepuffer
Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Puffers in Bytes bei Irp-AssociatedIrp.SystemBuffer> an.
Länge des Eingabepuffers
Der Puffer muss mindestens sizeof(MPIO_PASS_THROUGH_PATH) oder, wenn er von einer 32-Bit-Anwendung in einem 64-Bit-Betriebssystem gesendet wird, sizeof(MPIO_PASS_THROUGH_PATH32) sein.
Ausgabepuffer
Der Porttreiber gibt alle Anforderungsoptimierungsdaten und alle Daten zurück, die vom Gerät an den Puffer bei Irp-AssociatedIrp.SystemBuffer> übertragen werden.
Länge des Ausgabepuffers
Die Elemente SenseInfoLength und DataTransferLength in der eingebetteten SCSI_PASS_THROUGH-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 Wert für die Eingabelänge in der eingebetteten SCSI_PASS_THROUGH nicht ordnungsgemäß festgelegt ist.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddscsi.h (einschließen von Ntddscsi.h) |