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.
Para obter mais informações sobre como implementar uma função de retorno de chamada EvtDeviceWdmIrpPreprocess , consulte Manipulando IRPs do WDM fora da estrutura.

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

Confira também

WdfDeviceInitAssignWdmIrpPreprocessCallback

WdfDeviceWdmDispatchPreprocessedIrp