EVT_WDFDEVICE_WDM_IRP_PREPROCESS função de retorno de chamada (wdfdevice.h)
[Aplica-se somente ao KMDF]
A função de retorno de chamada de evento EvtDeviceWdmIrpPreprocess de um driver 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 IRP .
Retornar valor
A função de retorno de chamada EvtDeviceWdmIrpPreprocess deve:
- Defina o membro IoStatus.Status do IRP como STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE e retorne o mesmo valor (depois de chamar IoCompleteRequest), se a função de retorno de chamada concluir com êxito o IRP recebido.
- Defina o membro IoStatus.Status do IRP como um valor 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.
- Retorne 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.
Comentários
Para registrar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess , seu driver deve chamar WdfDeviceInitAssignWdmIrpPreprocessCallback.
Seu driver pode usar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess para fazer qualquer uma das 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 após a estrutura tratá-lo.
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 para a 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 que a função de retorno de chamada recebe. O local de pilha de E/S adicional permite que a função de retorno de chamada defina uma rotina 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 em IRQL = PASSIVE_LEVEL.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfdevice.h (inclua Wdf.h) |
IRQL | <=DISPATCH_LEVEL |