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.
A estrutura fornece funcionalidade de verificação interna que você pode usar para testar um driver KMDF em execução. Essa funcionalidade, chamada KMDF Verifier, valida extensivamente o estado do driver e os argumentos que o driver passa para métodos de objeto de estrutura. Você pode usar o verificador do framework sozinho ou em conjunto com a ferramenta Driver Verifier (Verifier.exe) de uso geral.
Se o KMDF Verifier estiver ativado, o framework verifica a aquisição de bloqueios e hierarquias, assegura que as chamadas ao framework ocorram no IRQL correto, verifica o cancelamento correto de E/S e o uso da fila, e assegura que o driver e o framework sigam os contratos documentados. Ele também pode simular condições de falta de memória para que o desenvolvedor do driver possa testar se o driver responde corretamente sem travar, bloquear ou falhar ao descarregar.
Quando o Verificador KMDF está ativado, a estrutura entra em modo de depuração se um período de tempo limite padrão de 60 segundos expirar antes que alguns dos eventos descritos anteriormente tenham sido concluídos. Neste ponto, você pode depurar o problema ou digitar "g" no depurador para reiniciar o período de tempo limite. Você pode alterar o período de tempo limite padrão usando o valor do registo DbgWaitForSignalTimeoutInSec descrito em Controlar o Comportamento do Verificador.
Recomendamos executar o Driver Verifier (Verifier.exe) durante o teste, e adicionar o seu próprio driver e wdf01000.sys à lista de verificação.
Observação
O Verificador KMDF é ativado automaticamente ao usar as configurações de /standard do Verificador de Driver. Se você estiver usando /flags em vez da configuração do verificador de driver /standard, esteja ciente de que no Windows 10, versão 1803 ou compilações mais recentes, /flags é preterido em favor do /ruleclasses. A classe de regra para WDF é 34. Para habilitar o verificador WDF se /standard não estiver a ser usado, use /ruleclasses 34.
Você também pode usar a aplicação de controlo do WDF Verifier (WdfVerifier.exe) para ativar e desativar o KMDF Verifier.
Ativando e desativando a verificação interna da estrutura
Você pode habilitar manualmente o Verificador KMDF usando este procedimento:
Se o driver já estiver carregado, use o Gerenciador de dispositivos para desativar o dispositivo. Desativar o dispositivo faz com que o driver seja descarregado.
Use o RegEdit para definir o VerifierOn como um valor diferente de zero na subchave Parameters\Wdf do driver na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services no registo do Windows. Um valor diferente de zero indica que o Verificador KMDF está habilitado.
Talvez seja necessário adicionar VerifierOn manualmente à subchave se ela ainda não estiver presente.
Use o Gerenciador de dispositivos para reativar o dispositivo, carregando assim o driver.
Quando o driver chama WdfDriverCreate, a estrutura examina o registo e ativa o verificador da estrutura se VerifierOn num valor diferente de zero.
Para desativar o verificador da estrutura, siga as mesmas etapas, mas defina o valor de VerifierOn como zero.
Para determinar se o verificador da estrutura está ativado, defina um ponto de interrupção em um local depois que o driver chamar WdfDriverCreate e use o comando da extensão do depurador !wdfdriverinfo:
!wdfkd.wdfdriverinfo<seu nome de driver> **** 0x1
Para obter mais informações sobre os comandos de extensão do depurador, consulte Extensões do Depurador para Drivers Baseados em Framework.
Controlando o comportamento do verificador
Recomendamos que você use o aplicativo de controle WDF Verifier para controlar as opções abaixo. No entanto, você pode modificar diretamente os seguintes valores no registro.
Os valores relevantes estão localizados sob a subchave Parameters\Wdf da chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services.
VerifyOn (REG_DWORD)
Defina esse valor como um valor diferente de zero para habilitar o WDFVERIFY macro.
DbgBreakOnError (REG_DWORD)
Se esse valor for definido como um valor diferente de zero, a estrutura será quebrada no depurador (se disponível) sempre que um driver chamar WdfVerifierDbgBreakPoint.
DbgWaitForSignalTimeoutInSec (REG_DWORD)
A partir do Windows 8, quando VerifierOn e DbgBreakOnError são definidos com valores diferentes de zero, o driver pode alterar o tempo limite padrão definindo DbgWaitForSignalTimeoutInSec.
VerifierAllocateFailCount (REG_DWORD)
Se esse valor for definido como um valor n, a estrutura falhará em todas as tentativas de alocar memória para os objetos do driver após a enésima alocação.
TrackHandles (REG_MULTI_SZ)
Se esse valor for definido como uma lista de um ou mais nomes de tipo de identificadores de objeto de estrutura, a estrutura rastreia referências a todos os identificadores de objeto que correspondem aos tipos de identificador especificados.
EnhancedVerifierOptions (REG_DWORD)
apenas KMDF
Contém um bitmap que você pode usar para habilitar recursos opcionais do verificador da estrutura.
VerificarNívelInferior (REG_DWORD)
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.
Como regra geral, se você definir os valores do Registro acima, exclua-os quando eles não forem mais necessários.
Para obter descrições completas desses valores de registro, consulte Valores de Registro para depuração de drivers baseados em frameworks.