Partager via


EVT_WDF_REQUEST_COMPLETION_ROUTINE fonction de rappel (wdfrequest.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement CompletionRoutine d’un pilote s’exécute lorsqu’un autre pilote termine une demande d’E/S spécifiée.

Syntaxe

EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;

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

Paramètres

[in] Request

Handle pour un objet de demande d’infrastructure qui représente la demande d’E/S terminée.

[in] Target

Handle vers un objet cible d’E/S qui représente la cible d’E/S qui a terminé la demande.

[in] Params

Pointeur vers une structure WDF_REQUEST_COMPLETION_PARAMS qui contient des informations sur la requête terminée. Voir la remarque ci-dessous concernant la validité des paramètres d’achèvement.

[in] Context

Informations de contexte fournies par le pilote, que le pilote a spécifiées dans un appel précédent à WdfRequestSetCompletionRoutine.

Valeur de retour

None

Remarques

Pour inscrire une fonction de rappel CompletionRoutine pour une requête d’E/S, un pilote doit appeler WdfRequestSetCompletionRoutine. Pour plus d’informations sur cette fonction de rappel, consultez Achèvement des demandes d’E/S.

La structure des paramètres d’achèvement est entièrement remplie avec des informations valides uniquement si le pilote a mis en forme la demande en appelant l’une des options suivantes :

Si le pilote a mis en forme la requête à l’aide de WdfRequestFormatRequestUsingCurrentType ou WdfRequestWdmFormatUsingStackLocation, seul le champ IoStatus dans la structure des paramètres d’achèvement est valide.

Le CompletionRoutine d’un pilote KMDF peut s’exécuter à IRQL <= DISPATCH_LEVEL indépendamment de la valeur ExecutionLevel spécifiée dans la structure WDF_OBJECT_ATTRIBUTES pour l’objet de requête d’E/S.

Exemples

Le type de fonction est déclaré dans Wdfrequest.h, comme suit.

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

Pour définir une fonction de rappel CompletionRoutine nommée MyCompletionRoutine, vous devez d’abord fournir une déclaration de fonction requise par SDV et d’autres outils de vérification, comme suit :

EVT_WDF_REQUEST_COMPLETION_ROUTINE  MyCompletionRoutine;

Ensuite, implémentez votre fonction de rappel comme suit :

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

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfrequest.h (inclure Wdf.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine