EVT_WDF_REQUEST_COMPLETION_ROUTINE función de devolución de llamada (wdfrequest.h)

[Se aplica a KMDF y UMDF]

La función de devolución de llamada de eventos CompletionRoutine de un controlador se ejecuta cuando otro controlador completa una solicitud de E/S especificada.

Sintaxis

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

Identificador de un objeto de solicitud de marco que representa la solicitud de E/S completada.

[in] Target

Identificador de un objeto de destino de E/S que representa el destino de E/S que completó la solicitud.

[in] Params

Puntero a una estructura de WDF_REQUEST_COMPLETION_PARAMS que contiene información sobre la solicitud completada. Consulte la nota siguiente con respecto a la validez de los parámetros de finalización.

[in] Context

Información de contexto proporcionada por el controlador, que el controlador especificó en una llamada anterior a WdfRequestSetCompletionRoutine.

Valor devuelto

None

Observaciones

Para registrar una función de devolución de llamada CompletionRoutine para una solicitud de E/S, un controlador debe llamar a WdfRequestSetCompletionRoutine. Para obtener más información sobre esta función de devolución de llamada, consulte Finalización de solicitudes de E/S.

La estructura de parámetros de finalización se rellena completamente con información válida solo si el controlador ha dado formato a la solicitud llamando a una de las siguientes opciones:

Si el controlador da formato a la solicitud mediante WdfRequestFormatRequestUsingCurrentType o WdfRequestWdmFormatUsingStackLocation, solo el campo IoStatus de la estructura de parámetros de finalización es válido.

Un controlador KMDF CompletionRoutine se puede ejecutar en IRQL <= DISPATCH_LEVEL independientemente del valor ExecutionLevel especificado en la estructura WDF_OBJECT_ATTRIBUTES para el objeto de solicitud de E/S.

Ejemplos

El tipo de función se declara en Wdfrequest.h, como se indica a continuación.

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

Para definir una función de devolución de llamada CompletionRoutine denominada MyCompletionRoutine, primero debe proporcionar una declaración de función que requieren SDV y otras herramientas de comprobación, como se indica a continuación:

EVT_WDF_REQUEST_COMPLETION_ROUTINE  MyCompletionRoutine;

A continuación, implemente la función de devolución de llamada de la siguiente manera:

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

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfrequest.h (incluya Wdf.h)
IRQL <=DISPATCH_LEVEL

Consulte también

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine