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 :
EvtIoStop, EvtCleanupCallback ou EvtDestroyCallback pour la file d’attente
EvtCleanupCallback ou EvtDestroyCallback pour l’objet file
EvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback ou EvtDestroyCallback pour l’appareil
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 :
Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes. |
S’applique à
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue