Funzione ChangerSetPosition (mcd.h)
ChangerSetPosition gestisce gli aspetti specifici del dispositivo di un IRP di controllo del dispositivo con il codice IOCTL IOCTL_CHANGER_SET_POSITION.
Sintassi
NTSTATUS ChangerSetPosition(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parametri
[in] DeviceObject
Puntatore all'oggetto dispositivo che rappresenta il modificatore.
[in] Irp
Puntatore all'IRP.
Valore restituito
Se il modificatore supporta l'impostazione della posizione dell'elemento di trasporto, ChangerSetPosition restituisce lo stato restituito dal driver della porta di sistema o uno dei valori seguenti:
STATUS_SUCCESS
STATUS_INFO_LENGTH_MISMATCH
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Se il modificatore non supporta l'impostazione della posizione dell'elemento di trasporto, ChangerSetPosition restituisce STATUS_INVALID_DEVICE_REQUEST.
Commenti
Questa routine è obbligatoria.
ChangerSetPosition imposta il meccanismo di trasporto robotico del modificatore sulla destinazione specificata, in genere per ottimizzare lo spostamento o lo scambio di supporti posizionando prima il trasporto.
Il flag CHANGER_POSITION_TO_ELEMENT in Features0 di GET_CHANGER_PARAMETERS indica se il modificatore supporta questa funzionalità.
Il driver della classe changer controlla la lunghezza del buffer di input nella posizione dello stack di I/O prima di chiamare ChangerSetPosition. Irp-SystemBuffer> punta a una struttura CHANGER_SET_POSITION come parametro di input che indica l'elemento di trasporto e la destinazione da impostare.
ChangerSetPosition verifica innanzitutto che gli indirizzi degli elementi di trasporto e di destinazione siano validi e converta gli indirizzi degli elementi in base zero in indirizzi specifici del dispositivo. Compila quindi un SRB con una rete CDB per posizionare l'elemento e lo invia al driver della porta di sistema.
ChangerSetPosition imposta il campo Informazioni nel blocco di stato di I/O su sizeof(CHANGER_SET_POSITION) prima di tornare al driver di classe del modificatore.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |