EVT_WDFDEVICE_WDM_IRP_PREPROCESS função de retorno de chamada (wdfdevice.h)
[Aplica-se somente ao KMDF]
O de um driver EvtDeviceWdmIrpPreprocess função de retorno de chamada de evento recebe um IRP antes que a estrutura processe o IRP.
Sintaxe
EVT_WDFDEVICE_WDM_IRP_PREPROCESS EvtWdfdeviceWdmIrpPreprocess;
NTSTATUS EvtWdfdeviceWdmIrpPreprocess(
[in] WDFDEVICE Device,
[in, out] PIRP Irp
)
{...}
Parâmetros
[in] Device
Um identificador para um objeto de dispositivo de estrutura.
[in, out] Irp
Um ponteiro para uma estrutura de IRP.
Valor de retorno
A função de retorno de chamada EvtDeviceWdmIrpPreprocess deve:
- Defina o IoStatus.Status membro do IRP como STATUS_SUCCESS ou outro valor de status para o qual NT_SUCCESS(status) é igual a VERDADEIROe retorne o mesmo valor (depois de chamar IoCompleteRequest), se a função de retorno de chamada concluir com êxito o IRP recebido.
- Defina o IoStatus.Status membro do IRP como um valor de status para o qual NT_SUCCESS(status) é igual a FALSE e retorne o mesmo valor (depois de chamar IoCompleteRequest), se a função de retorno de chamada detectar um erro.
- Retornar STATUS_PENDING, se a função de retorno de chamada chamar IoMarkIrpPending .
- Retorne o valor que o método WdfDeviceWdmDispatchPreprocessedIrp retorna, se a função de retorno de chamada chamar esse método.
Observações
Para registrar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess, o driver deve chamar WdfDeviceInitAssignWdmIrpPreprocessCallback.
O driver pode usar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess para fazer qualquer uma ou todas as seguintes ações:
- Manipule um IRP que a estrutura não dá suporte seguindo as regras do WDM para lidar com IRPs.
- Pré-processar um IRP antes que a estrutura o trate.
- Defina uma rotina de conclusão para que o driver possa pós-processar um IRP depois que a estrutura o manipular.
Se você quiser que a estrutura manipule posteriormente o IRP como faria se a função de retorno de chamada EvtDeviceWdmIrpPreprocess não tivesse sido chamada, a função de retorno de chamada deverá chamar WdfDeviceWdmDispatchPreprocessedIrp para retornar o IRP à estrutura.
Se o driver registrar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess, a estrutura adicionará um local de pilha de E/S adicional aos IRPs recebidos pela função de retorno de chamada. O local de pilha de E/S adicional permite que a função de retorno de chamada defina uma rotina de IoCompletion antes de chamar WdfDeviceWdmDispatchPreprocessedIrp.
A função de retorno de chamada EvtDeviceWdmIrpPreprocess é chamada no IRQL do thread de chamada. O IRQL é determinado pelo tipo de IRP que a estrutura está passando para EvtDeviceWdmIrpPreprocess. Por exemplo, se o gerenciador PnP enviar IRP_MN_QUERY_DEVICE_RELATIONS em IRQL = PASSIVE_LEVEL, a estrutura chamará EvtDeviceWdmIrpPreprocess no IRQL = PASSIVE_LEVEL.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.0 |
cabeçalho | wdfdevice.h (inclua Wdf.h) |
IRQL | <=DISPATCH_LEVEL |