Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Платформа предоставляет встроенные функции проверки, которые можно использовать для тестирования работающего драйвера KMDF. Эта функция, называемая kmDF Validateer, широко проверяет состояние драйвера и аргументы, которые драйвер передает в методы объекта платформы. Вы можете использовать средство проверки фреймворка самостоятельно или вместе с средством проверки драйверов общего назначения (Verifier.exe).
Если средство проверки KMDF включено, фреймворк проверяет получение блокировок и иерархий, гарантирует, что вызовы к фреймворку выполняются на правильном уровне IRQL, проверяет правильность отмены операций ввода-вывода и использования очередей, а также гарантирует, что драйвер и фреймворк следуют документированным контрактам. Он также может имитировать условия вне памяти, чтобы разработчик драйвера может проверить правильность реагирования драйвера без сбоя, зависания или сбоя выгрузки.
Если средство проверки KMDF включено, платформа передает управление в отладчик, если указанный по умолчанию интервал времени ожидания в 60 секунд истекает раньше завершения некоторых описанных ранее событий. На этом этапе можно выполнить отладку проблемы или ввести "g" в отладчике, чтобы перезапустить период ожидания. Период времени ожидания по умолчанию можно изменить с помощью значения DbgWaitForSignalTimeoutInSec реестра, описанного в разделе Управление поведением верификатора.
Мы рекомендуем запустить средство проверки драйверов (Verifier.exe) во время тестирования и добавить собственный драйвер и wdf01000.sys в список проверки.
Примечание.
Средство проверки KMDF автоматически включается при использовании параметров /standard
средства проверки драйверов. Если вы используете /flags
вместо параметра проверки драйвера /standard
, помните, что в Windows 10 версии 1803 или более поздних сборках /flags
не рекомендуется использовать в пользу /ruleclasses
. Класс правил для WDF равен 34. Чтобы включить средство проверки WDF, если /standard
не используется, используйте /ruleclasses 34
.
Вы также можете использовать приложения средства проверки WDF (WdfVerifier.exe) для включения и отключения средства проверки KMDF.
Включение и отключение встроенной проверки платформы
Вы можете вручную включить средство проверки KMDF с помощью следующей процедуры:
Если драйвер уже загружен, используйте диспетчер устройств для отключения устройства. Отключение устройства приводит к выгрузке драйвера.
Используйте RegEdit, чтобы задать параметру VerifierOn значение, отличное от нуля, в подразделе "Параметры драйвера\Wdf" раздела HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services в реестре Windows. Значение, отличное от нуля, указывает, что включен средство проверки KMDF.
Возможно, потребуется добавить VerifierOn вручную в подраздел, если он еще не присутствует.
Используйте Диспетчер устройств, чтобы снова включить устройство, тем самым загрузив драйвер.
Когда драйвер вызывает WdfDriverCreate, платформа проверяет реестр и включает проверяющий объект платформы, если VerifierOn ненулевому значению.
Чтобы отключить средство проверки платформы, выполните те же действия, но задайте значение VerifierOn равным нулю.
Чтобы определить, включено ли средство проверки фреймворка, установите точку останова в месте после вызова вашего драйвера WdfDriverCreate и используйте команду расширения отладчика !wdfdriverinfo.
!wdfkd.wdfdriverinfo<имя драйвера> **** 0x1
Дополнительные сведения о командах расширения отладчика см. в разделе "Расширения отладчика для драйверов на основе фреймворка".
Управление поведением проверяющего
Мы рекомендуем использовать контрольное приложение WDF Verifier для управления параметрами, перечисленными ниже. Однако можно напрямую изменить следующие значения в реестре.
Соответствующие значения находятся в подразделе Parameters\Wdf ключа HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services.
VerifyOn (REG_DWORD)
Задайте для этого значения значение, отличное от нуля, чтобы включить макрос WDFVERIFY.
DbgBreakOnError (REG_DWORD)
Если для этого параметра задано ненулевое значение, фреймворк будет входить в режим отладки (если доступно) каждый раз, когда драйвер вызывает WdfVerifierDbgBreakPoint.
DbgWaitForSignalTimeoutInSec (REG_DWORD)
Начиная с Windows 8, если VerifierOn и DbgBreakOnError имеют ненулевое значение, драйвер может изменить период ожидания по умолчанию, задав DbgWaitForSignalTimeoutInSec.
VerifierAllocateFailCount (REG_DWORD)
Если для этого значения установлено значение n, платформа терпит неудачу при каждой попытке выделить память для объектов драйвера после -й попытки выделения памяти.
TrackHandles (REG_MULTI_SZ)
Если для этого значения задан список одного или нескольких имен типов дескрипторов объектов платформы, платформа отслеживает ссылки на все дескрипторы объектов, соответствующие указанным типам дескрипторов.
EnhancedVerifierOptions (REG_DWORD)
KMDF только
Содержит растровое изображение, которое можно использовать для включения дополнительных функций проверяющего средства платформы.
VerifyDownLevel (REG_DWORD)
Если задано значение, отличное от нуля, и если драйвер был создан с версией платформы, старше текущей версии, средство проверки платформы включает тесты, добавленные после сборки драйвера.
Как правило, если задать указанные выше значения реестра, удалите их, если они больше не нужны.
Полные описания этих значений реестра см. в "Значения реестра для драйверов, основанных на платформе отладки".