Поделиться через


Набор правил IrpProcessing (KMDF)

Используйте эти правила, чтобы убедиться, что драйвер правильно обрабатывает пакеты запросов ввода-вывода (IRP).

В этом разделе

Раздел Описание

FwdIrpToIoQueueValid

Правило FwdIrpToIoQueueValid указывает, что драйвер отправляет IRP в очередь ввода-вывода с помощью метода WdfDeviceWdmDispatchToIoQueue из обратного вызова EvtDeviceWdmIrpDispatch или обратного вызова EvtDeviceWdmIrpPreprocess.

SetCompletionRoutineFromDispatch

Правило SetCompletionRoutineFromDispatch проверяет, что драйвер не задает подпрограмму завершения для IRP из функции обратного вызова EvtDeviceWdmIrpDispatch.

MiniportOnlyWdmDevice

Правило MiniportOnlyWdmDevice указывает, что драйверы WDF не должны использовать функции IoCreateDevice и IoCreateDeviceSecure для создания объектов устройств WDM. Это приведет к сбою компьютера, если кто-то пытается отправить IRP на устройство WDM. Это связано с тем, что для записей диспетчера IRP устройства задано значение WDF, но платформа не создала устройство WDF. Однако минипорт-драйверы могут использовать DDIs, так как для них не заданы точки входа диспетчера драйверов.

Выбор набора правил IrpProcessing

  1. Выберите проект драйвера (.vcxProj) в Microsoft Visual Studio. В меню "Драйвер" нажмите кнопку "Запустить средство проверки статического драйвера...".

  2. Перейдите на вкладку "Правила ". В разделе "Наборы правил" выберите IrpProcessing.

    Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите IrpProcessing.sdv с параметром /проверка. Например:

    msbuild /t:sdv /p:Inputs="/check:IrpProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

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