Função ChangerReinitializeUnit (mcd.h)
ChangerReinitializeUnit manipula os aspectos específicos do dispositivo de um IRP de controle de dispositivo com o código IOCTL IOCTL_CHANGER_REINITIALIZE_TRANSPORT.
Sintaxe
NTSTATUS ChangerReinitializeUnit(
[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.
Retornar valor
Se o alterador der suporte à recalibrar um elemento de transporte, ChangerReinitializeUnit retornará o valor STATUS_XXX retornado pelo driver de porta do sistema ou um dos seguintes valores:
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Se o alterador não der suporte à recalibrar um elemento de transporte, ChangerReinitializeUnit retornará STATUS_INVALID_DEVICE_REQUEST.
Comentários
Essa rotina é necessária.
ChangerReinitializeUnit faz com que o alterador recalibre seu elemento de transporte. Dependendo do alterador, isso pode retornar o transporte para uma posição "home". O driver de classe do alterador normalmente chama ChangerReinitializeUnit depois que o alterador é ativado ou um aplicativo de chamada inicia uma operação de recuperação. O sinalizador CHANGER_DEVICE_REINITIALIZE_CAPABLE em Recursos0 de GET_CHANGER_PARAMETERS indica se o transporte do alterador dá suporte à recalibração nessas circunstâncias.
O driver de classe do alterador verifica o comprimento do buffer de entrada no local da pilha de E/S antes de chamar ChangerReinitializeUnit. Irp-SystemBuffer> aponta para uma estrutura CHANGER_ELEMENT que indica o elemento a ser recalibrado.
ChangerReinitializeUnit cria um SRB com um CDB para posicionar o elemento de transporte e o envia para o driver de porta do sistema.
ChangerReinitializeUnit define o campo Informações no bloco de E/S status como sizeof(CHANGER_ELEMENT) 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 |