Função ChangerExchangeMedium (mcd.h)
O 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 de dispositivo que representa o alterador.
[in] Irp
Ponteiro para o IRP.
Retornar valor
Se o alterador 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 alterador não der suporte à troca de mídia, ChangerExchangeMedium retornará STATUS_INVALID_DEVICE_REQUEST.
Comentários
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 em Recursos0 da estrutura 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 mídia 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 um driver de miniclasse. Irp-SystemBuffer> aponta para uma estrutura 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, em seguida, converte endereços de elemento 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 a envia para o driver de porta do sistema.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |