Правило MdlAfterReqCompletedWriteA (kmdf)

Правило MdlAfterReqCompletedWriteA указывает, что в функции обратного вызова EvtIoWrite полученный объект списка дескрипторов памяти (MDL) не может быть доступен после завершения запроса ввода-вывода.

В функции обратного вызова EvtIoWrite драйвера для очереди ввода-вывода устройства буфер запросов, полученный путем вызова метода WdfRequestRetrieveInputWdmMdl , недоступен после вызова WdfRequestComplete, WdfRequestCompleteWithInformation или WdfRequestCompleteWithPriorityBoost в запросе ввода-вывода.

Это правило учитывает следующие функции доступа MDL:

WDF_MEMORY_DESCRIPTOR_INIT_MDLMmGetMdlByteCountMmGetSystemAddressForMdlSafeMmGetMdlVirtualAddressIoBuildPartialMdl (первый и второй параметр) KeFlushIoBuffersMmGetMdlPfnArrayMmGetMdlByteOffsetMmPrepareMdlForReuseWdfDmaTransactionInitialize

Модель драйвера: KMDF

Как тестировать

Во время компиляции

Запустите средство проверки статических драйверов и укажите правило MdlAfterReqCompletedWriteA .

Выполните следующие действия, чтобы выполнить анализ кода.
  1. Подготовьте код (используйте объявления типов ролей).
  2. Запустите средство проверки статических драйверов.
  3. Просмотр и анализ результатов.

Дополнительные сведения см. в разделе Использование средства проверки статических драйверов для поиска дефектов в драйверах.

Применяется к

WDF_MEMORY_DESCRIPTOR_INIT_MDLWdfDmaTransactionInitializeWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputWdmMdlIoBuildPartialMdlKeFlushIoBuffersmmGetMdlByteCountmmGetMdlByteOffsetMmGetMdlPfnArrayMmGetMdlVirtualAddressMmGetSystemAddressForMdlSafeMmPrepareMdlForReuse