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 tópico descreve como se pode analisar por que o refletor encerrou o processo de host do driver (WUDFHost.exe) ou por que o processo de host do driver falhou.
A razão mais comum para o refletor encerrar o processo de host é a expiração dos limites de tempo do processo de host UMDF.
É altamente recomendável fazer todo o desenvolvimento e teste do seu driver UMDF com um depurador do kernel conectado ao sistema de teste e ativar o Application Verifier (AppVerif.exe) no WUDFHost.exe. Use o seguinte comando, anexe um depurador do kernel e reinicie.
AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
Usando arquivos de despejo
Quando o driver UMDF falhar ou encontrar um problema, uma quebra será relatada no depurador do kernel. Esses problemas devem ser depurados quando exceções de modo de usuário são relatadas no depurador do kernel. As quebras do depurador do kernel também são relatadas pelo WudfRd.sys antes de encerrar um processo de host de driver devido a um driver UMDF problemático (não responsivo). Você também encontrará logs e despejos de pilha relatados no seguinte local. Para revisar arquivos de despejo capturados pelo UMDF, execute estas etapas:
Localize o arquivo de .dmp mais recente no diretório \ Microsoft\WDF%ProgramData%. Antes do UMDF 2.15 fornecido com o Windows 10 1507, o diretório de log estava em %windir%\system32\LogFiles\WUDF.
Carregue o arquivo .dmp mais recente no depurador usando o seguinte comando:
WinDbg -z <path to the .dmp file>Observe o estado dos tópicos no momento da rescisão.
Se você precisar de despejos de pilha capturados, no momento do teste, defina os seguintes valores do Registro e reinicie o sistema de teste antes de executar os testes. Você também pode examinar o histórico do Relatório de Erros do Windows no log de eventos do aplicativo do sistema em %SystemRoot%\System32\Winevt\Logs\Application.evtx
reg add "HKLM\Software\Microsoft\windows NT\CurrentVersion\Wudf" /v LogMinidumpType /t REG_DWORD /d 0x1122
reg add "HKLM\Software\Microsoft\windows NT\CurrentVersion\Wudf" /v LogEnable /t REG_DWORD /d 1
Usando o depurador
Em outros casos, poderá ser necessário conectar-se a um destino ao vivo em modo kernel para determinar por que o refletor encerrou o processo do host. Para configurar sua sessão de depuração, siga as etapas descritas em Como habilitar a depuração de um driver UMDF.
Depois de estabelecer uma conexão, use !wdfkd.wdfumtriage para examinar os drivers UMDF e exibir os IRPs pendentes usando a extensão do depurador !wdfkd.wdfumirps do UMDF (!wudfext.umirps para UMDF versão 1).
Se um IRP PnP ou um IRP de energia estiver pendente, descubra por que o driver faz com que o IRP não responda examinando threads no processo anfitrião.
Você pode usar a extensão !process para examinar os threads em execução no processo do host. O valor 0x1f flags mostra o stack trace para cada thread.
!process<process addr>0x1f
Se o seu driver não completou um IRP cancelado rapidamente, determine qual IRP foi cancelado e por que ele não foi concluído.
Se um IRP de limpeza ou fechamento estiver pendente, determine por que o IRP está a demorar muito tempo a processar.