MdlAfterReqCompletedWriteA-Regel (kmdf)

Die MdlAfterReqCompletedWriteA-Regel gibt an, dass innerhalb der Rückruffunktion EvtIoWrite auf das abgerufene MDL-Objekt (Memory Descriptor List) nicht zugegriffen werden kann, nachdem die E/A-Anforderung abgeschlossen wurde.

Innerhalb der EvtIoWrite-Rückruffunktion des Treibers für die E/A-Warteschlange eines Geräts kann nicht auf den Anforderungspuffer zugegriffen werden, der durch Aufrufen der WdfRequestRetrieveInputWdmMdl-Methode abgerufen wurde, nachdem WdfRequestCompleteCompleteWithInformation oder WdfRequestCompleteWithPriorityBoost für die E/A-Anforderung aufgerufen wurde.

Diese Regel berücksichtigt die folgenden MDL-Zugriffsfunktionen:

WDF_MEMORY_DESCRIPTOR_INIT_MDLMmGetMdlByteCountMmGetSystemAddressForMdlSafeMmGetMdlVirtualAddressIoBuildPartialMdl (erster und zweiter Parameter) KeFlushIoBuffersMmGetMdlPfnArrayMmGetMdlByteOffsetMmPrepareMdlForReuseWdfDmaTransactionInitialize

Treibermodell: KMDF

So führen Sie einen Test durch

Beim Kompilieren:

Führen Sie Static Driver Verifier aus, und geben Sie die Regel MdlAfterReqCompletedWriteA an.

Gehen Sie folgendermaßen vor, um Ihren Code zu analysieren:
  1. Bereiten Sie den Code vor (verwenden Sie Rollentypdeklarationen).
  2. Führen Sie Static Driver Verifier aus.
  3. Überprüfen und analysieren Sie die Ergebnisse.

Weitere Informationen finden Sie unter Verwenden der statischen Treiberüberprüfung, um Fehler in Treibern zu finden.

Gilt für:

WDF_MEMORY_DESCRIPTOR_INIT_MDLWdfDmaTransactionInitializeWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputWdm MdlIoBuildPartialMdlKeFlushIoBuffersMmGetMdlByteCountMmGetMdlByteOffsetMmGetMdlPfnArrayMmGetMdlVirtualAddressMmGetSystemAddressForMdlSafeMmPrepareMdlForReuse