Função ChangerSetPosition (mcd.h)
ChangerSetPosition manipula os aspectos específicos do dispositivo de um IRP de controle de dispositivo com o código IOCTL IOCTL_CHANGER_SET_POSITION.
Sintaxe
NTSTATUS ChangerSetPosition(
[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 à definição da posição do elemento de transporte, ChangerSetPosition retornará o status retornado pelo driver de porta do sistema ou um dos seguintes valores:
STATUS_SUCCESS
STATUS_INFO_LENGTH_MISMATCH
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Se o alterador não der suporte à configuração da posição do elemento de transporte, ChangerSetPosition retornará STATUS_INVALID_DEVICE_REQUEST.
Comentários
Essa rotina é necessária.
ChangerSetPosition define o mecanismo de transporte robótico do alterador para o destino especificado, normalmente para otimizar a movimentação ou troca de mídia posicionando primeiro o transporte.
O sinalizador CHANGER_POSITION_TO_ELEMENT em Recursos0 de GET_CHANGER_PARAMETERS indica se o alterador dá suporte a essa funcionalidade.
O driver de classe do alterador verifica o comprimento do buffer de entrada no local da pilha de E/S antes de chamar ChangerSetPosition. Irp-SystemBuffer> aponta para uma estrutura CHANGER_SET_POSITION como um parâmetro de entrada que indica o elemento de transporte e o destino a ser definido.
ChangerSetPosition primeiro verifica se os endereços dos elementos de transporte e destino são válidos e converte endereços de elemento baseados em zero em endereços específicos do dispositivo. Em seguida, ele cria um SRB com um CDB para posicionar o elemento e o envia para o driver de porta do sistema.
ChangerSetPosition define o campo Informações no bloco de status de E/S como sizeof(CHANGER_SET_POSITION) antes de retornar ao driver de classe do alterador.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |