Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve os valores do Registro que um driver WDF pode definir. Aplica-se a drivers KMDF e drivers UMDF começando com o UMDF versão 2.
A menos que especificado de outra forma nas seções abaixo, os seguintes valores do Registro estão localizados sob a subchave de Parameters\Wdf um driver.
- Para um driver KMDF, essa subchave está localizada em
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services, sob o nome de serviço do driver. - Para um driver UMDF, essa subchave está localizada em
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services, sob o nome de serviço do driver.
A subchave para o driver sempre usa o nome de serviço do driver, mesmo que o nome do arquivo do binário do driver seja diferente do nome do serviço.
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
- Para um driver KMDF, defina esse valor na chave do
HKLM\SYSTEM\CurrentControlSet\Control\Wdf\Kmdf\DiagnosticsRegistro. - Para um driver UMDF, defina esse valor na chave do
HKLM\System\CurrentControlSet\Control\Wdf\Umdf\DiagnosticsRegistro.
The driver might need to create the optional Diagnostics subkey.
Se definido como um valor diferente de zero, o carregador da estrutura enviará uma variedade de mensagens para o depurador de kernel enquanto ele estiver carregando um driver e associando-o a uma versão da biblioteca da estrutura ou enquanto ele está descarregando um driver.
DbgWaitForSignalTimeoutInSec
REG_DWORD, versões da estrutura 1.11 e posterior
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
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode.
Esse valor especifica os nomes dos binários de driver a serem carregados no modo de depuração. Para habilitar o modo de depuração para binários de driver X.DLL, Y.DLL e Z.DLL, por exemplo, esse valor seria definido X.DLL\0Y.DLL\0Z.DLL\0\0como .
DebugModeFlags
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode.
| Value | Description |
|---|---|
| 0x01 | Habilitar o modo de depuração. Essa configuração desativa a funcionalidade de reinicialização automática descrita no uso do pool de dispositivos em drivers UMDF. |
| 0x02 | Desabilite o pool de dispositivos. Para obter mais informações sobre o pool de dispositivos, consulte Como usar o pool de dispositivos em drivers UMDF. |
| 0x04 | Disable timeouts. |
Quando você usa a opção F5 no Microsoft Visual Studio, todos os três sinalizadores são definidos para o driver implantado.
EnhancedVerifierOptions
REG_DWORD, versões da estrutura 1.9 e posteriores
Esse valor contém um bitmap. Cada bit representa uma opção de verificador adicional que os usuários podem habilitar definindo o bit.
Bit values:
0x1: If set, the verifier checks whether each of the driver's event callback functions does the following:
Retorna no mesmo IRQL no qual foi chamado. 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
Defina como um valor diferente de zero para fazer com que a estrutura inclua informações de seu agente de eventos em arquivos de despejo de falhas.
HostFailKdDebugBreak
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF.
Se esse valor não for zero e um depurador de kernel estiver conectado ao computador, o refletor será dividido no depurador de kernel antes de encerrar o processo de host. HostFailKdDebugBreak is disabled by default in Windows 7 and earlier operating systems. Starting in Windows 8, HostFailKdDebugBreak is enabled by default.
O refletor também será dividido no depurador de kernel se houver uma terminação inesperada do processo de host (por exemplo, por um componente não UMDF ou devido a uma exceção sem tratamento). Se houver várias pilhas de dispositivos em pool no processo de host que está sendo encerrado, o refletor será dividido no depurador várias vezes, uma vez para cada pilha de dispositivo carregada no processo de host.
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
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<service name>\Parameters\Wdf.
Esse valor afeta apenas o driver UMDF especificado.
Contém um valor de atraso em segundos. Faz com que WUDFHost tente se conectar a um depurador pelo número especificado de segundos após o driver ter sido carregado.
Durante o período de atraso especificado, o processo de host procura o depurador do modo de usuário uma vez por segundo e interrompe se um estiver conectado. Se um depurador do modo de usuário não estiver anexado dentro desse período e o bit alto estiver definido (0x80000000), a estrutura fará uma única tentativa de invadir o depurador no modo kernel. See the section on HostProcessDbgBreakOnStart above for examples.
Para que as alterações nos valores do Registro UMDF entrem em vigor, você deve reinicializar o computador.
HostProcessDbgBreakOnDriverLoad (global)
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}. Você pode defini-lo usando a ferramenta Verificador do WDF (WdfVerifier.exe) no WDK. Esse valor afeta todos os drivers UMDF no sistema.
Contém um valor de atraso em segundos. Faz com que WUDFHost atrase o número especificado de segundos após o driver ter sido carregado. 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). Isso significa que, se o driver causar tempos limite excessivos, o uso desses valores poderá resultar em seu driver causando um acidente fatal no destino.
HostProcessDbgBreakOnStart
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}. Você pode defini-lo usando a ferramenta Verificador do WDF (WdfVerifier.exe) no WDK. Esse valor afeta todos os drivers UMDF no sistema.
Contém um valor de atraso em segundos. Durante o período de atraso especificado, o processo de host procura o depurador do modo de usuário uma vez por segundo e interrompe se um estiver conectado. 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 | A estrutura tenta se conectar ao depurador do modo de usuário uma vez por segundo por 4 segundos. A estrutura nunca tenta se conectar ao depurador no modo kernel. |
| 0x80000000 | A estrutura faz uma única tentativa de se conectar ao depurador do modo de usuário. Se o depurador do modo de usuário não estiver anexado, a estrutura tentará se conectar ao depurador do modo kernel. |
| 0x80000004 | A estrutura tenta se conectar ao depurador do modo de usuário uma vez por segundo por 4 segundos. Se o depurador do modo de usuário não estiver anexado dentro de 4 segundos, a estrutura tentará se conectar ao depurador do modo kernel. |
Você também pode definir esse valor do Registro usando a ferramenta Verificador do WDF (WdfVerifier.exe) incluída no WDK.
LogPages
REG_DWORD
Defina como o número de páginas de memória que a estrutura atribui ao agente de eventos. Se o valor for indefinido, a estrutura usará um valor padrão de uma página. O valor máximo que você pode definir é 16 para computadores que têm páginas de memória do tamanho de 4 quilobytes (processadores x86 e amd64) e 8 para computadores que têm páginas de memória do tamanho de 8 quilobytes (processadores 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
Em alguns casos, os objetos da estrutura são incorretamente paiizados e não excluídos após o uso. 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. Lista cada nome de tipo a ser verificado. Por exemplo, você pode especificar WDFDMATRANSACTION WDFDEVICE. Para especificar todos os tipos de identificador, use * como a cadeia de caracteres. Se a chave ObjectsForLeakDetection não for especificada, o padrão será monitorar WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT e WDFDEVICE.
Se você especificar WDFREQUEST, o verificador conta apenas objetos WDFREQUEST que o driver cria. No momento, esse recurso não dá suporte ao acompanhamento do tipo de objeto 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. Por exemplo, se a lista de tipos de identificador consistir na cadeia de caracteres "WDFREQUEST WDFQUEUE", a estrutura rastreará referências a todos os objetos de solicitação e objetos de fila. Se a lista contiver um asterisco ("*"), a estrutura rastreará todos os identificadores de objeto.
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. Você deve definir esse valor somente enquanto estiver desenvolvendo seu driver. 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. Essa falha ajuda você a testar o tratamento do driver de condições de memória baixa. 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.
Observe que o verificador conta as alocações que o driver solicita e as alocações que a estrutura solicita em nome do driver. Observe também que o número de alocações que podem ocorrer para o driver pode mudar de uma versão da estrutura para a próxima.
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, versões da estrutura 1.9 e posteriores
Se definido como um valor diferente de zero e se o driver tiver sido criado com uma versão da estrutura mais antiga que a versão atual, o verificador da estrutura incluirá testes que foram adicionados após a compilação do driver. Se esse valor não existir ou for definido como zero, o verificador da estrutura incluirá apenas os testes que existiam quando o driver foi criado.
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. Se o valor VerifierOn estiver definido, VerifyOn será definido implicitamente como diferente de zero.