Правило MdlAfterReqCompletedReadA (kmdf)
Правило MdlAfterReqCompletedReadA указывает, что в функции обратного вызова EvtIoRead полученный объект списка дескрипторов памяти (MDL) недоступен после завершения запроса ввода-вывода.
В функции обратного вызова EvtIoRead драйвера буфер запросов, полученный путем вызова метода WdfRequestRetrieveOutputWdmMdl , не может быть получен после вызова WdfRequestComplete, WdfRequestCompleteWithInformation или WdfRequestCompleteWithPriorityBoost в запросе ввода-вывода.
Это правило учитывает следующие функции:
WDF_MEMORY_DESCRIPTOR_INIT_MDLMmGetMdlByteCountMmGetSystemAddressForMdlSafeMmGetMdlVirtualAddressIoBuildPartialMdl (первый и второй параметр) KeFlushIoBuffersMmGetMdlPfnArrayMmGetMdlByteOffsetMmPrepareMdlForReuseWdfDmaTransactionInitialize
Модель драйвера: KMDF
Как тестировать
Во время компиляции |
---|
Запустите средство проверки статических драйверов и укажите правило MdlAfterReqCompletedReadA . Выполните следующие действия, чтобы выполнить анализ кода.
Дополнительные сведения см. в разделе Использование средства проверки статических драйверов для поиска дефектов в драйверах. |
Применяется к
WDF_MEMORY_DESCRIPTOR_INIT_MDLWdfDmaTransactionInitializeWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveOutputWdmMdlIoBuildPartialMdlKeFlushIoBuffersmmGetMdlByteCountmmGetMdlByteOffsetMmGetMdlPfnArrayMmGetMdlVirtualAddressMmGetSystemAddressForMdlSafeMmPrepareMdlForReuse