Règle BufAfterReqCompletedIntIoctlA (kmdf)

La règle BufAfterReqCompletedIntIoctlA vérifie qu’une fois la demande terminée, sa mémoire tampon est inaccessible (dans le rappel EvtIoInternalDeviceControl uniquement). La mémoire tampon a été récupérée en appelant WdfRequestRetrieveInputBuffer ou WdfRequestRetrieveOutputBuffer ou WdfRequestRetrieveUnsafeUserInputBuffer ou WdfRequestRetrieveUnsafeUserOutputBuffer.

Dans la fonction de rappel d’événement de file d’attente EvtIoInternalDeviceControl , La mémoire tampon de requête récupérée en appelant WdfRequestRetrieveInputBuffer ou WdfRequestRetrieveOutputBuffer ou WdfRequestRetrieveUnsafeUserInputBuffer ou WdfRequestRetrieveUnsafeUserOutputBuffer est inaccessible après WdfRequestComplete, WdfRequestCompleteWithInformation ou WdfRequestCompleteWithPriorityBoost des méthodes ont été appelées sur la demande. Les fonctions d’accès à la mémoire tampon possibles suivantes sont prises en compte : RtlMoveMemory (avec la mémoire tampon en tant que 1er et 2e paramètre), RtlZeroMemory, RtlCompareMemory, ZwReadFile, ZwWriteFile, WDF_MEMORY_DESCRIPTOR_INIT_BUFFER, WdfMemoryCreatePreallocated, WdfMemoryAssignBuffer, WdfMemoryCopyFromBuffer, WdfMemoryCopyToBuffer.

Modèle de pilote : KMDF

Comment tester

Au moment de la compilation

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

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 à

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetputBuffer WdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile