IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT IOCTL (ntddscsi.h)
Questo codice di controllo di I/O consente a un'applicazione o a un driver kernel di inviare un comando SCSI a un LUN reale designato. Le restrizioni seguenti si applicano all'uso di questo codice di controllo di I/O:
- Se esiste un driver di classe per lo pseudo LUN, l'applicazione deve inviare la richiesta a tale driver di classe. Di conseguenza, un'applicazione può inviare questa richiesta direttamente a un MPIO solo se non è presente alcun driver di classe per il dispositivo.
- Tutte le richieste pass-through devono essere sincrone.
- Le applicazioni non richiedono privilegi amministrativi per inviare una richiesta pass-through a un dispositivo, ma devono avere accesso in lettura/scrittura al dispositivo.
- La richiesta è costituita da una richiesta pass-through SCSI (in una struttura di SCSI_PASS_THROUGH_DIRECT incorporata) e da determinate direttive.
- La struttura pass-through SCSI deve soddisfare i requisiti per tali elementi, come descritto in SCSI_PASS_THROUGH_DIRECT.
- Se la richiesta deve essere inviata tramite il DSM che ha richiesto il LUN reale, deve essere indicato. In tal caso, il DSM stesso deve indicare lo stesso LUN reale. In caso contrario, la richiesta verrà rifiutata.
- La richiesta deve specificare il LUN reale costituito dallo pseudo LUN in termini di indirizzo SCSI del primo o del relativo PathId MPIO, ma non da entrambi.
Codice principale
Buffer di input
Parameters.DeviceIoControl.InputBufferLength indica le dimensioni, in byte, del buffer in Irp-AssociatedIrp.SystemBuffer>.
Lunghezza del buffer di input
Il buffer deve essere almeno sizeof(MPIO_PASS_THROUGH_PATH) o, se inviato da un'applicazione a 32 bit in un sistema operativo a 64 bit, sizeof(MPIO_PASS_THROUGH_PATH32).
Buffer di output
Il driver di porta restituisce tutti i dati di tipo request-sense e tutti i dati trasferiti dal dispositivo al buffer in Irp-AssociatedIrp.SystemBuffer>.
Lunghezza del buffer di output
La strutturaSCSI_PASS_THROUGH_DIRECT incorporata SenseInfoLength eDataTransferLength viene aggiornata per indicare la quantità di dati trasferiti.
Blocco dello stato
Il campo Informazioni è impostato sul numero di byte restituiti nel buffer di output in Irp-AssociatedIrp.SystemBuffer>. Il campo Stato è impostato su STATUS_SUCCESS oppure su STATUS_BUFFER_TOO_SMALL o STATUS_INVALID_PARAMETER se il valore lunghezza di input nel SCSI_PASS_THROUGH_DIRECT incorporato è impostato in modo non corretto.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntddscsi.h (include Ntddscsi.h) |