Função ChangerExchangeMedium (mcd.h)
ChangerExchangeMedium manipula os aspectos específicos do dispositivo de um IRP de controle de dispositivo com o código IOCTL IOCTL_CHANGER_EXCHANGE_MEDIUM.
Sintaxe
NTSTATUS ChangerExchangeMedium(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parâmetros
[in] DeviceObject
Ponteiro para o objeto do dispositivo que representa o alterador.
[in] Irp
Ponteiro para o IRP.
Valor de retorno
Se o changer der suporte à troca de mídia, ChangerExchangeMedium retornará o status retornado pelo driver de porta do sistema ou um dos seguintes valores:
STATUS_SUCCESS
STATUS_DESTINATION_ELEMENT_FULL
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_SOURCE_ELEMENT_EMPTY
Se o changer não der suporte à troca de mídia, ChangerExchangeMedium retornará STATUS_INVALID_DEVICE_REQUEST.
Observações
Essa rotina é necessária.
ChangerExchangeMedium move uma parte da mídia de um elemento de origem para um destino e desse destino para outro destino. A origem e o segundo destino geralmente são os mesmos, resultando em uma simples troca de mídia.
O sinalizador CHANGER_EXCHANGE_MEDIA no Features0 da estrutura de GET_CHANGER_PARAMETERS indica se o alterador dá suporte a essa funcionalidade. Um alterador que dá suporte à troca de mídia normalmente tem dois mecanismos de seletor em um único elemento de transporte ou pelo menos dois elementos de transporte. Um alterador que tem um único mecanismo de seletor pode dar suporte à troca de meio por meio da emulação do comando.
O driver de classe do alterador verifica o comprimento do buffer de entrada no local da pilha de E/S antes de chamar a rotina changerExchangeMedium de de um driver de miniclasse. irp –> SystemBuffer aponta para uma estrutura de CHANGER_EXCHANGE_MEDIUM como um parâmetro de entrada que indica o elemento de transporte e o destino a ser definido.
ChangerExchangeMedium primeiro verifica se os endereços de elemento de transporte, origem e destino são válidos e converte endereços de elementos baseados em zero em endereços de elemento específicos do dispositivo. Em seguida, ele cria um SRB com um CDB para trocar a mídia e envia-a para o driver de porta do sistema.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |