MdlAfterReqCompletedWriteA rule (kmdf)
The MdlAfterReqCompletedWriteA rule specifies that within the EvtIoWrite callback function, the memory descriptor list (MDL) object retrieved cannot be accessed after the I/O request is completed.
Within the driver's EvtIoWrite callback function for a device's I/O queue, the request buffer that was retrieved by calling the WdfRequestRetrieveInputWdmMdl method cannot be accessed after calling WdfRequestComplete, WdfRequestCompleteWithInformation, or WdfRequestCompleteWithPriorityBoost on the I/O request.
This rule considers the following MDL access functions:
WDF_MEMORY_DESCRIPTOR_INIT_MDL MmGetMdlByteCount MmGetSystemAddressForMdlSafe MmGetMdlVirtualAddress IoBuildPartialMdl (first and second parameter) KeFlushIoBuffers MmGetMdlPfnArray MmGetMdlByteOffset MmPrepareMdlForReuse WdfDmaTransactionInitialize
Driver model: KMDF
How to test
At compile time |
---|
Run Static Driver Verifier and specify the MdlAfterReqCompletedWriteA rule. Use the following steps to run an analysis of your code:
For more information, see Using Static Driver Verifier to Find Defects in Drivers. |
Applies to
WDF_MEMORY_DESCRIPTOR_INIT_MDL WdfDmaTransactionInitialize WdfRequestComplete WdfRequestCompleteWithInformation WdfRequestCompleteWithPriorityBoost WdfRequestRetrieveInputWdmMdl IoBuildPartialMdl KeFlushIoBuffers MmGetMdlByteCount MmGetMdlByteOffset MmGetMdlPfnArray MmGetMdlVirtualAddress MmGetSystemAddressForMdlSafe MmPrepareMdlForReuse