Partager via


Règle RequestCompleted (kmdf)

La règle RequestCompleted spécifie que pour un pilote sans filtre, chaque requête présentée à la file d’attente d’E/S par défaut du pilote doit être effectuée, sauf si la requête est différée ou transférée, ou si WdfRequestStopAcknowledge est appelée.

Une demande d’E/S présentée à la file d’attente par défaut du pilote via l’une des fonctions de rappel de file d’attente doit être effectuée avant de quitter les fonctions de rappel de demande d’E/S, sauf dans les cas suivants :

  • La demande a été différée (vers un DPC ou un élément de travail, par exemple). Dans ce cas, vous pouvez utiliser la règle DeferredRequestCompleted .

  • La demande a été transférée à une cible d’E/S ou à une autre file d’attente

  • La demande a été remise à l’infrastructure (en appelant WdfDeviceEnqueueRequest)

  • WdfRequestStopAcknowledge a été appelé

La règle est vérifiée lorsque le pilote quitte les fonctions de rappel suivantes :

Les fonctions de rappel de file d’attente d’E/S pour la présentation de la demande sont EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl et EvtIoInternalDeviceControl.

Modèle de pilote : KMDF

Comment tester

Au moment de la compilation

Exécutez Static Driver Verifier et spécifiez la règle RequestCompleted .

Utilisez les étapes suivantes pour exécuter l’analyse de votre code :
  1. Préparez votre code (utilisez les déclarations de type).
  2. Exécutez le vérificateur de pilote statique.
  3. Affichez et analysez les résultats.

Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes.

S’applique à

WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue