Compartilhar via


EVT_WDF_REQUEST_COMPLETION_ROUTINE função de retorno de chamada (wdfrequest.h)

[Aplica-se a KMDF e UMDF]

A função de retorno de chamada de evento CompletionRoutine de um driver é executada quando outro driver conclui uma solicitação de E/S especificada.

Sintaxe

EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;

void EvtWdfRequestCompletionRoutine(
  [in] WDFREQUEST Request,
  [in] WDFIOTARGET Target,
  [in] PWDF_REQUEST_COMPLETION_PARAMS Params,
  [in] WDFCONTEXT Context
)
{...}

Parâmetros

[in] Request

Um identificador para um objeto de solicitação de estrutura que representa a solicitação de E/S concluída.

[in] Target

Um identificador para um objeto de destino de E/S que representa o destino de E/S que concluiu a solicitação.

[in] Params

Um ponteiro para uma estrutura WDF_REQUEST_COMPLETION_PARAMS que contém informações sobre a solicitação concluída. Veja a observação abaixo sobre a validade dos parâmetros de conclusão.

[in] Context

Informações de contexto fornecidas pelo driver, que o driver especificou em uma chamada anterior para WdfRequestSetCompletionRoutine.

Retornar valor

Nenhum

Comentários

Para registrar uma função de retorno de chamada CompletionRoutine para uma solicitação de E/S, um driver deve chamar WdfRequestSetCompletionRoutine. Para obter mais informações sobre essa função de retorno de chamada, consulte Concluindo solicitações de E/S.

A estrutura de parâmetros de conclusão será totalmente preenchida com informações válidas somente se o driver tiver formatado a solicitação chamando um dos seguintes:

Se o driver formatou a solicitação usando WdfRequestFormatRequestUsingCurrentType ou WdfRequestWdmFormatUsingStackLocation, somente o campo IoStatus na estrutura de parâmetros de conclusão será válido.

CompletionRoutine de um driver KMDF pode ser executado em IRQL <= DISPATCH_LEVEL independentemente do ExecutionLevel especificado na estrutura WDF_OBJECT_ATTRIBUTES para o objeto de solicitação de E/S.

Exemplos

O tipo de função é declarado em Wdfrequest.h, da seguinte maneira.

typedef VOID
  (EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    IN PWDF_REQUEST_COMPLETION_PARAMS  Params,
    IN WDFCONTEXT  Context
    );

Para definir uma função de retorno de chamada CompletionRoutine chamada MyCompletionRoutine, primeiro você deve fornecer uma declaração de função que o SDV e outras ferramentas de verificação exigem, da seguinte maneira:

EVT_WDF_REQUEST_COMPLETION_ROUTINE  MyCompletionRoutine;

Em seguida, implemente a função de retorno de chamada da seguinte maneira:

VOID
 MyCompletionRoutine (
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    IN PWDF_REQUEST_COMPLETION_PARAMS  Params,
    IN WDFCONTEXT  Context
    )
  {...}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfrequest.h (inclua Wdf.h)
IRQL <=DISPATCH_LEVEL

Confira também

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine