Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются значения реестра, которые может задать драйвер WDF. Он применяется к драйверам KMDF и драйверам UMDF, начиная с версии 2 UMDF.
Если иное не указано в разделах ниже, следующие значения реестра находятся в подразделе драйвера Parameters\Wdf .
- Для драйвера KMDF этот подраздел находится в
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servicesпапке под именем службы драйвера. - Для драйвера UMDF этот подраздел находится в
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Servicesпапке под именем службы драйвера.
В подразделе драйвера всегда используется имя службы драйвера, даже если имя двоичного файла драйвера отличается от имени службы.
DbgBreakOnError
REG_DWORD
If set to a nonzero value, the framework breaks into the debugger when a driver calls WdfVerifierDbgBreakPoint. (If the VerifierOn value is set, the framework breaks into the debugger even if the DbgBreakOnError value does not exist.) See the code example in the VerifierOn section.
DbgPrintOn
REG_DWORD
- Для драйвера KMDF задайте это значение в
HKLM\SYSTEM\CurrentControlSet\Control\Wdf\Kmdf\Diagnosticsразделе реестра. - Для драйвера UMDF задайте это значение в
HKLM\System\CurrentControlSet\Control\Wdf\Umdf\Diagnosticsразделе реестра.
The driver might need to create the optional Diagnostics subkey.
Если задано ненулевое значение, загрузчик платформы отправляет различные сообщения отладчику ядра во время загрузки драйвера и привязки его к версии библиотеки платформы или при выгрузке драйвера.
DbgWaitForSignalTimeoutInSec
REG_DWORD, версии платформа 1.11 и более поздние
Starting in Windows 8, when VerifierOn and DbgBreakOnError are set to nonzero values, the driver can change the default timeout period for breaking into the debugger by setting DbgWaitForSignalTimeoutInSec.
DebugModeBinaries
REG_MULTI_SZ, UMDF-only
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode.
Это значение указывает имена двоичных файлов драйвера, которые будут загружены в режим отладки. Чтобы включить режим отладки для двоичных файлов драйверов X.DLL, Y.DLL и Z.DLL, например, это значение будет задано X.DLL\0Y.DLL\0Z.DLL\0\0.
DebugModeFlags
REG_DWORD, UMDF-only
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode.
| Value | Description |
|---|---|
| 0x01 | Включите режим отладки. Этот параметр отключает функции автоматического перезапуска, описанные в разделе "Использование пула устройств" в драйверах UMDF. |
| 0x02 | Отключите пул устройств. Дополнительные сведения об объединении устройств см. в статье Использование объединения устройств в драйверах UMDF. |
| 0x04 | Disable timeouts. |
При использовании параметра F5 в Microsoft Visual Studio все три флага задаются для развернутого драйвера.
EnhancedVerifierOptions
REG_DWORD, версии фреймворка 1.9 и выше
Это значение содержит растровое изображение. Каждый бит представляет дополнительный параметр проверки, который пользователи могут включить, задав бит.
Bit values:
0x1: If set, the verifier checks whether each of the driver's event callback functions does the following:
Возвращается на тот же IRQL, на котором был вызван. If the values are different, a WDF_VIOLATION bug check occurs with an error code of 0xE.
Before returning, exits all critical regions that it enters. If the callback function returns within a critical region that it entered, a WDF_VIOLATION bug check occurs with an error code of 0xF.
0x10000: If set, and if the driver has enabled guaranteed forward progress for an I/O queue, the framework simulates a low-memory situation for each of the queue's I/O requests.
0x20000: If set, and if the driver has enabled guaranteed forward progress for an I/O queue, the framework simulates a low-memory situation for some randomly selected I/O requests.
ForceLogsInMiniDump
REG_DWORD
Установите ненулевое значение, чтобы фреймворк включал сведения из журнала событий в файлы аварийного дампа.
HostFailKdDebugBreak
REG_DWORD, UMDF-only
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF.
Если это значение не равно нулю, а отладчик ядра подключен к компьютеру, отражатель прерывает работу отладчика ядра перед завершением процесса узла. HostFailKdDebugBreak is disabled by default in Windows 7 and earlier operating systems. Starting in Windows 8, HostFailKdDebugBreak is enabled by default.
Рефлектор также вступает в отладчик ядра, если происходит неожиданное завершение работы хост-процесса (например, компонентом, не использующим UMDF, или из-за необработанного исключения). Если в завершаемом хост-процессе объединено несколько стеков устройств, отражатель прерывает отладчик несколько раз, по одному разу для каждого стека устройств, загруженного в хост-процесс.
HostProcessDbgBreakOnDriverLoad (driver-specific)
REG_DWORD, UMDF-only, works with any UMDF 1.x/2.x driver running on a target computer with UMDF version 2.31 or later
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<service name>\Parameters\Wdf.
Это значение влияет только на указанный драйвер UMDF.
Содержит значение задержки в секундах. Вызывает WUDFHost попытаться подключиться к отладчику в течение указанного количества секунд после загрузки драйвера.
В течение указанного периода задержки процесс узла ищет отладчик пользовательского режима один раз в секунду и прерывается при подключении. Если отладчик пользовательского режима не подключен в течение этого периода и установлен высокий бит (0x80000000), фреймворк делает одну попытку войти в отладчик режима ядра. See the section on HostProcessDbgBreakOnStart above for examples.
Чтобы изменения значений реестра UMDF вступили в силу, необходимо перезагрузить компьютер.
HostProcessDbgBreakOnDriverLoad (global)
REG_DWORD, UMDF-only
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}. Его можно задать с помощью средства проверки WDF (WdfVerifier.exe) в WDK. Это значение влияет на все драйверы UMDF в системе.
Содержит значение задержки в секундах. Заставляет WUDFHost отложить указанное количество секунд после загрузки драйвера. The behavior for HostProcessDbgBreakOnDriverLoad is otherwise the same as that described for HostProcessDbgBreakOnStart.
Specifying HostProcessDbgBreakOnStart or HostProcessDbgBreakOnDriverLoad causes the framework to disable other UMDF timeouts (for example, Plug and Play operations). Это означает, что если ваш драйвер вызывает чрезмерные тайм-ауты, использование этих значений может привести к тому, что ваш драйвер вызовет смертельный сбой в целевой системе.
HostProcessDbgBreakOnStart
REG_DWORD, UMDF-only
Это значение реестра находится в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}. Его можно задать с помощью средства проверки WDF (WdfVerifier.exe) в WDK. Это значение влияет на все драйверы UMDF в системе.
Содержит значение задержки в секундах. В течение указанного периода задержки процесс узла ищет отладчик пользовательского режима один раз в секунду и прерывается при подключении. If a user-mode debugger is not attached within this period and the high bit in HostProcessDbgBreakOnStart is set (0x80000000), the framework makes a single attempt to break into the kernel-mode debugger. For example:
| Value | Result |
|---|---|
| 0x00000004 | Платформа пытается подключиться к отладчику пользовательского режима один раз в секунду в течение 4 секунд. Платформа никогда не пытается подключиться к отладчику в режиме ядра. |
| 0x80000000 | Фреймворк делает единственную попытку подключиться к отладчику пользовательского режима. Если отладчик пользовательского режима не подключен, платформа пытается подключиться к отладчику в режиме ядра. |
| 0x80000004 | Платформа пытается подключиться к отладчику пользовательского режима один раз в секунду в течение 4 секунд. Если отладчик пользовательского режима не подключен в течение 4 секунд, платформа пытается подключиться к отладчику в режиме ядра. |
Вы также можете задать это значение реестра с помощью средства проверки WDF (WdfVerifier.exe), включенного в WDK.
LogPages
REG_DWORD
Задайте количество страниц памяти, которые платформа назначает средству ведения журнала событий. Если значение не определено, платформа использует значение по умолчанию одной страницы. Максимальное значение, которое можно задать, — 16 для компьютеров с 4-килобайтами памяти (процессоры x86 и amd64) и 8 для компьютеров с 8-килобайтами памяти (процессоры ia64). (The operating system might not write the log contents to a crash dump file if a large number of pages is specified.) Use the AddService directive and the AddReg directive to set this value in your INF file, as follows:
[xxx.NT.Services]
AddService = yyy, 2, zzz.AddService
[zzz.AddService]
DisplayName = %aaa\bbb%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\ddd.SYS
AddReg = eee.AddReg
[eee.AddReg]
HKR, Parameters\Wdf, LogPages, 0x00010001, 3 ; KMDF IFR size
ObjectLeakDetectionLimit
В некоторых случаях объекты фреймворка имеют неправильного родителя и не удаляются после использования. You can use ObjectLeakDetectionLimit and ObjectsForLeakDetection to specify a maximum number of objects and what should happen when this threshold is exceeded.
REG_DWORD
Specifies the maximum number of objects of the types described in the ObjectsForLeakDetection key. To control whether exceeding this threshold should cause a debug break or a bugcheck, set the DbgBreakOnError key. The limit scales with the number of devices installed, so if the driver creates three WDFDEVICE objects, the limit is three times the value specified in ObjectLeakDetectionLimit.
ObjectsForLeakDetection
REG_MULTI_SZ
Use with ObjectLeakDetectionLimit. Перечисляет название каждого типа для проверки. Например, можно указать WDFDMATRANSACTION WDFDEVICE. Чтобы указать все типы дескрипторов, используйте * в качестве строки. Если ключ ObjectsForLeakDetection не указан, по умолчанию следует отслеживать WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT и WDFDEVICE.
Если указать WDFREQUEST, проверяющий подсчитывает только объекты WDFREQUEST, создаваемые драйвером. Эта функция в настоящее время не поддерживает отслеживание типа объекта WDFMEMORY.
TrackHandles
REG_MULTI_SZ
If set to a list of one or more type names of framework object handles, and if VerifierOn is set, the framework tracks references to all object handles that match the specified handle types. Например, если список типов дескриптора состоит из строки "WDFREQUEST WDFQUEUE," фреймворк отслеживает ссылки на все объекты запроса и объекты очереди. Если список содержит звёздочку ("*"), фреймворк отслеживает все дескрипторы объектов.
VerboseOn
REG_DWORD
If set to a nonzero value, the framework's event logger records additional information that can help you debug your driver, such as entries into or exits from internal code paths. Это значение следует задать только при разработке драйвера. See the code example in VerifierOn.
VerifierAllocateFailCount
REG_DWORD
If set to a value n, and if VerifierOn is set, the framework fails every attempt to allocate memory for the driver's objects after the nth allocation. Этот сбой помогает протестировать обработку драйвера условий с низкой памятью. For example, if you set VerifierAllocateFailCount to 2, every memory allocation after the second allocation will fail. The default value for VerifierAllocateFailCount is 0xffffffff. After setting VerifierAllocateFailCount, you can turn it off by setting it to (DWORD) -1 or removing the value altogether.
Обратите внимание, что проверяющий подсчитывает как выделения, запрашиваемые драйвером, так и выделения, запрашиваемые платформой от имени драйвера. Кроме того, обратите внимание, что количество выделений, которые могут возникнуть для драйвера, может измениться от одного выпуска фреймворка к следующему.
VerifierOn
REG_DWORD
Set to a nonzero value to enable KMDF Verifier, which extensively validates a driver's state and function parameters. You should set VerifierOn and DbgBreakOnError when you are developing your driver. Use the AddService directive and the AddReg directive to set these values in the Services section of the INF file, for example:
[xxx_Inst.NT.Services]
AddService = xxx,%SPSVCINST_ASSOCSERVICE%,xxx_Service_Inst
[xxx_Service_Inst]
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_BOOT_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
LoadOrderGroup = "Base"
ServiceBinary = %12%\xxx.sys
AddReg = KMDFVerifierAddReg
[KMDFVerifierAddReg]
HKR, Parameters\Wdf,VerifierOn,0x00010001,1
HKR, Parameters\Wdf,VerboseOn,0x00010001,1
HKR, Parameters\Wdf,DbgBreakOnError,0x00010001,1
VerifyDownLevel
REG_DWORD, версии фреймворка 1.9 и выше
Если задано значение, отличное от нуля, и если драйвер был создан с версией платформы, старше текущей версии, средство проверки платформы включает тесты, добавленные после сборки драйвера. Если это значение не существует или равно нулю, средство проверки платформы включает только тесты, которые существовали при построении драйвера.
For example, if your driver was built with version 1.7 of the framework, and if version 1.9 of the framework is installed on the computer, setting VerifyDownLevel to nonzero causes the verifier to include tests that were added to version 1.9 of the verifier when your driver runs.
VerifyOn
REG_DWORD
Set to a nonzero value to enable the WDFVERIFY macro that is defined in Wdfassert.h, or set to zero to disable the macro. Если задано значение VerifierOn, ПроверкаOn неявно имеет значение nonzero.