Funzione ChangerExchangeMedium (mcd.h)
ChangerExchangeMedium gestisce gli aspetti specifici del dispositivo di un IRP con il codice IOCTL IOCTL_CHANGER_EXCHANGE_MEDIUM.
Sintassi
NTSTATUS ChangerExchangeMedium(
[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 lo scambio di supporti, ChangerExchangeMedium restituisce lo stato restituito dal driver della porta di sistema o uno dei valori seguenti:
STATUS_SUCCESS
STATUS_DESTINATION_ELEMENT_FULL
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_SOURCE_ELEMENT_EMPTY
Se il modificatore non supporta lo scambio di supporti, ChangerExchangeMedium restituisce STATUS_INVALID_DEVICE_REQUEST.
Osservazioni
Questa routine è obbligatoria.
ChangerExchangeMedium sposta un elemento multimediale da un elemento di origine a una destinazione e da tale destinazione a un'altra destinazione. L'origine e la seconda destinazione sono spesso uguali, con conseguente semplice scambio di supporti.
Il flag CHANGER_EXCHANGE_MEDIA in Features0 della struttura di GET_CHANGER_PARAMETERS indica se il modificatore supporta questa funzionalità. Un modificatore che supporta lo scambio di supporti include in genere due meccanismi di selezione su un singolo elemento di trasporto o almeno due elementi di trasporto. Un modificatore che dispone di un singolo meccanismo di selezione può supportare lo scambio di supporti tramite l'emulazione del comando.
Il driver della classe changer controlla la lunghezza del buffer di input nella posizione dello stack I/O prima di chiamare la routine di ChangerExchangeMed ium di un driver miniclasse. Irp:>SystemBuffer punta a una struttura CHANGER_EXCHANGE_MEDIUM come parametro di input che indica l'elemento di trasporto e la destinazione da impostare.
ChangerExchangeMedium verifica innanzitutto che gli indirizzi degli elementi di trasporto, origine e destinazione siano validi, quindi converte gli indirizzi degli elementi in base zero in indirizzi di elemento specifici del dispositivo. Crea quindi un SRB con un CDB per scambiare il supporto e lo invia al driver della porta di sistema.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |