Condividi tramite


Regola MdlAfterReqCompletedReadA (kmdf)

La regola MdlAfterReqCompletedReadA specifica che all'interno della funzione di callback EvtIoRead non è possibile accedere all'oggetto MDL (Memory Descriptor List) recuperato dopo il completamento della richiesta di I/O.

All'interno della funzione di callback EvtIoRead del driver, non è possibile accedere al buffer della richiesta recuperato chiamando il metodo WdfRequestRetrieveOutputWdmMdl dopo aver chiamato WdfRequestComplete, WdfRequestCompleteWithInformation o WdfRequestCompleteWithPriorityBoost nella richiesta di I/O.

Questa regola considera le funzioni seguenti:

WDF_MEMORY_DESCRIPTOR_INIT_MDLMmGetMdlByteCountMmGetSystemAddressForMdlSafeMmGetMdlVirtualAddressIoBuildPartialMdl (primo e secondo parametro) KeFlushIoBuffersMmGetMdlPfnArrayMmGetMdlByteOffsetMmPrepareMdlForReuseWdfDmaTransactionInitialize

Modello di driver: KMDF

Come eseguire il test

In fase di compilazione

Eseguire Static Driver Verifier e specificare la regola MdlAfterReqCompletedReadA .

Usa i passaggi descritti di seguito per eseguire un'analisi del codice:
  1. Prepara il codice (usa dichiarazioni di tipo ruolo).
  2. Esegui Driver Verifier statico.
  3. Visualizza e analizza i risultati.

Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers.For more information, see Using Static Driver Verifier to Find Defects in Drivers.

Si applica a

WDF_MEMORY_DESCRIPTOR_INIT_MDLWdfDmaTransactionInitializeWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveOutputWdmdlIoBuildPartialMdlKeFlushIoBuffersMmGetMdlByteCountMmGetMdlByteOffsetMmGetMdlPfnArrayMmGetMdlVirtualAddressMmGetSystemAddressForMdlSafeMmPrepareMdlForReuse