Использование средства проверки UMDF
Платформа предоставляет встроенные функции проверки, которые можно использовать для тестирования работающего драйвера среда выполнения платформы драйвера режима пользователя (UMDF). Эта функция, иногда называемая проверяющим средство UMDF, широко проверяет состояние драйвера и аргументы, которые драйвер передает в методы объектов платформы. Средство проверки UMDF можно использовать самостоятельно или вместе с средством проверки приложений общего назначения (AppVerif.exe).
Средство проверки UMDF проверяет получение блокировки и иерархии, проверяет правильность отмены ввода-вывода и использования очередей, а также гарантирует, что драйвер и платформа соответствуют документированных контрактам.
Средство проверки UMDF вызывает сбои в коде драйвера UMDF, чтобы проверить процесс узла. Однако проверка ошибок UMDF не приводит к отображению синего текстового экрана с информацией об ошибке. Вместо этого проверьте ошибку UMDF:
Создает файл дампа памяти и сохраняет его в каталоге файлов журнала компьютера (например, %windir%\System32\LogFiles\WUDF\Xxx.dmp).
Примечание. Начиная с UMDF 2.15 каталог журнала — %ProgramData%\Microsoft\WDF.
Создает отчет об ошибке для Майкрософт (согласие).
Прерывается в отладчик, если он подключен к компьютеру.
Завершает процесс узла и отключает устройство.
Начиная с UMDF 2.0 проверка UMDF выдает точки останова в некоторых случаях и вызывает проверку ошибки UMDF в других случаях. Это поведение аналогично проверке KMDF.
Настоятельно рекомендуется выполнять все разработки и тестирование драйвера после включения средства проверки приложений (AppVerif.exe) на WUDFHost.exe. Используйте следующую команду, подключите отладчик и перезагрузите его.
AppVerif -enable Heaps Exceptions Handles Locks Memory TLS Leak -for WudfHost.exe
Начиная с версии 2.0 UMDF, при запуске средства проверки приложений на узле драйвера (Wudfhost), средство проверки UMDF автоматически включается для всех драйверов UMDF 2.0 в этом узле, а также всех драйверов UMDF 2.0 в будущих процессах узлов драйверов.
В UMDF 1.11 и более ранних версиях средство проверки платформы всегда включено, и его нельзя отключить.
Включение и отключение проверки UMDF
Вы можете вручную включить средство проверки UMDF, установив параметр VerifierOn в ненулевом значении в подразделе "Параметры драйвера\Wdf" раздела реестра имен имен HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<Driver.>
Обратите внимание , что существование значения VerifierOn вообще, даже равно равно нулю, переопределяет компоновку с помощью средства проверки приложений. В результате рекомендуется удалить значение, если оно не принудительно, а не равно нулю.
Чтобы определить, включен ли средство проверки UMDF, задайте точку останова в расположении после вызова WdfDriverCreate драйвера и используйте команду расширения отладчика !wdfdriverinfo:
!wdfkd.wdfdriverinfo 0x1> **** <
Дополнительные сведения о командах расширения отладчика см. в разделе "Расширения отладчика" для драйверов на основе платформы.
Управление поведением проверяющего
Вы можете управлять поведением средства проверки UMDF, изменив значения в реестре. Кроме того, для задания этих значений можно использовать приложение элемента управления WDF Verifier.
Следующие значения реестра можно использовать с UMDF 1.Драйверы x , а также драйверы UMDF 2.0 и более поздних версий.
VerifyDownLevel (REG_DWORD)
Если CheckDownLevel имеет значение, отличное от нуля, и если драйвер был создан с версией платформы, которая старше текущей версии, средство проверки платформы включает тесты, добавленные после сборки драйвера. Если это значение не существует или равно нулю, средство проверки платформы включает только тесты, которые существовали при построении драйвера.
Например, если драйвер был создан с версией 1.7 платформы, и если на компьютере установлена версия 1.9 платформы, установка CheckDownLevel ненулевого значения приводит к тому, что проверяющий будет включать тесты, добавленные в версию 1.9 средства проверки при запуске драйвера.
Это значение находится в подразделе Parameters\Wdf раздела реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\DriverName.
TrackObjects (REG_DWORD)
Если Для TrackObjects задано ненулевое значение, платформа вводит отладчик при выгрузке драйвера, если какие-либо объекты на основе платформы просочились (не были удалены).
Во время регулярного тестирования следует включить TrackObjects , а не TrackRefCounts. Если средство проверки сообщает, что драйвер утечки объектов платформы, используйте приложение элемента управления для включения параметра проверки TrackRefCounts .
Это значение находится в подразделе DefaultHostProcessGuid HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services, где DefaultHostProcessGuid — это значение, которое можно найти в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF.
TrackRefCounts (REG_DWORD)
Если Для TrackRefCounts задано ненулевое значение, платформа сохраняет количество ссылок на каждый объект на основе платформы. Расширение отладчика !wudfrefhist можно использовать для просмотра изменений количества ссылок объекта.
Задание TrackRefCounts ненулевому значению снижает производительность драйвера, поэтому значение должно быть равно нулю, если не выполняется отладка ошибки удаления объектов.
Это значение находится в подразделе DefaultHostProcessGuid HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services, где DefaultHostProcessGuid — это значение, которое можно найти в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF.
Помимо перечисленных выше значений реестра драйверы UMDF 2.0 и более поздних версий также могут использовать многие значения реестра, перечисленные в средстве проверки KMDF.