Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve os valores do Registro que um driver WDF pode definir. Ele se aplica a drivers KMDF e drivers UMDF a partir da versão 2 do UMDF.
A menos que especificado de outra forma nas seções abaixo, os seguintes valores do registo estão localizados na subchave Parameters\Wdf de um controlador.
- 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 do driver sempre usa o nome de serviço do driver, mesmo que o nome de arquivo 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 sob a chave do Registro
HKLM\SYSTEM\CurrentControlSet\Control\Wdf\Kmdf\Diagnostics. - Para um driver UMDF, defina esse valor sob a chave do Registro
HKLM\System\CurrentControlSet\Control\Wdf\Umdf\Diagnostics.
The driver might need to create the optional Diagnostics subkey.
Se definido como um valor diferente de zero, o carregador do framework envia uma variedade de mensagens para o depurador do kernel enquanto carrega um driver e o vincula a uma versão da biblioteca do framework, ou enquanto descarrega um driver.
DbgWaitForSignalTimeoutInSec
REG_DWORD, versões do framework 1.11 e posteriores
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 do 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 como X.DLL\0Y.DLL\0Z.DLL\0\0.
DebugModeFlags
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode.
| Value | Description |
|---|---|
| 0x01 | Habilite o modo de depuração. Essa configuração desativa a funcionalidade de reinicialização automática descrita em Usando o pool de dispositivos em drivers UMDF. |
| 0x02 | Desative o agrupamento de dispositivos. Para obter mais informações sobre o agrupamento de dispositivos, consulte Utilização do agrupamento 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 do framework 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 em que 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 registrador de eventos em arquivos de despejo de falha.
HostFailKdDebugBreak
REG_DWORD, UMDF-only
Esse valor do Registro está localizado em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF.
Se esse valor for diferente de zero e um depurador do kernel estiver conectado à máquina, o refletor quebra no depurador do kernel antes de encerrar o processo do 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 invade o depurador do kernel se houver um encerramento inesperado do processo do host (por exemplo, por um componente não-UMDF ou devido a uma exceção não tratada). Se houver várias pilhas de dispositivos agrupadas no processo de host que está sendo encerrado, o refletor quebra no depurador várias vezes, uma vez para cada pilha de dispositivos 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 o WUDFHost tente conectar-se a um depurador durante o número especificado de segundos após o controlador ter sido carregado.
Durante o período de atraso especificado, o processo anfitrião procura o depurador de modo utilizador uma vez por segundo e interrompe se um estiver conectado. Se um depurador de modo de usuário não estiver anexado dentro desse período de tempo e o bit alto estiver definido (0x80000000), o framework fará uma única tentativa de aceder ao depurador de 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 reiniciar 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 WDF Verifier (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 seu driver causar tempos limite excessivos, o uso desses valores pode resultar numa falha fatal no sistema-alvo.
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 WDF Verifier (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 anfitrião procura o depurador de modo utilizador 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 de modo de usuário uma vez por segundo por 4 segundos. A estrutura nunca tenta se conectar ao depurador de modo kernel. |
| 0x80000000 | A estrutura faz uma única tentativa de se conectar ao depurador de modo de usuário. Se o depurador de modo de usuário não estiver anexado, a estrutura tentará se conectar ao depurador de modo kernel. |
| 0x80000004 | A estrutura tenta se conectar ao depurador de modo de usuário uma vez por segundo por 4 segundos. Se o depurador de modo de usuário não for anexado dentro de 4 segundos, a estrutura tentará se conectar ao depurador de modo kernel. |
Você também pode definir esse valor do Registro usando a ferramenta WDF Verifier (WdfVerifier.exe) incluída no WDK.
LogPages
REG_DWORD
Defina para o número de páginas de memória que a estrutura atribui ao seu registrador 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 de 4 kilobytes (processadores x86 e amd64) e 8 para computadores que têm páginas de memória de 8 kilobytes (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 de estrutura são parentados incorretamente 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 verificar. 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 contará apenas os objetos WDFREQUEST criados pelo driver. Atualmente, esse recurso não oferece suporte ao rastreamento 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 "WDFREQUEST WDFQUEUE", o framework rastreia as referências a todos os objetos de solicitação e objetos de fila. Se a lista contiver um asterisco ("*"), a estrutura rastreia 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. Esta falha ajuda-o a testar a forma como o condutor lida com condições de falta de memória. 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 seu driver pode mudar de uma versão do framework 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 do framework 1.9 e posteriores
Se definido como um valor diferente de zero e se o driver foi criado com uma versão da estrutura que é mais antiga do que a versão atual, o verificador da estrutura inclui testes que foram adicionados depois que o driver foi criado. Se esse valor não existir ou estiver 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á implicitamente definido como diferente de zero.