Правило RequestCompleted (kmdf)

Правило RequestCompleted указывает, что для нефильтрованного драйвера каждый запрос, представленный в очередь ввода-вывода драйвера по умолчанию, должен быть завершен, если запрос не откладывается или не пересылается, или если вызывается WdfRequestStopAcknowledge .

Запрос ввода-вывода, представленный в очередь драйвера по умолчанию с помощью одной из функций обратного вызова очереди, должен быть завершен до выхода из функций обратного вызова запроса ввода-вывода, за исключением следующих случаев:

  • Запрос был отложен (например, в DPC или рабочем элементе). В этом случае можно использовать правило DeferredRequestCompleted .

  • Запрос был переадресован в целевой объект ввода-вывода или в другую очередь.

  • Запрос был доставлен в платформу (путем вызова WdfDeviceEnqueueRequest)

  • WdfRequestStopAcknowledge был вызван

Правило проверяется при выходе драйвера из следующих функций обратного вызова:

Функции обратного вызова очереди ввода-вывода для представления запроса: EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl и EvtIoInternalDeviceControl.

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

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

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

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

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

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

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

WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalioctlOthersSynchronouslyWdfIoTargetSendInternalioctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue