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 você pode encontrar vazamentos de memória de driver causados por referências não lançadas. Ele se aplica aos drivers User-Mode Driver Framework (UMDF) versão 1 e 2.
UMDF 1
No UMDF versão 1, uma pilha de chamadas pode causar um vazamento de memória se cada chamada para AddRef não tiver uma chamada Release correspondente.
Para testar se o driver UMDF versão 1 vaza objetos de estrutura, use as seguintes etapas:
Use o aplicativo de controle WDF Verifier para definir as opções de verificador desejadas. Durante os testes regulares, comece definindo TrackObjects e não TrackRefCounts.
Quando o driver é descarregado, o verificador de código da estrutura entra no depurador se um objeto da estrutura não foi excluído e solicita que você use a extensão do depurador !wudfdumpobjects . Esta extensão do depurador exibe uma lista de objetos não eliminados.
Se o verificador de código indicar que o driver está vazando objetos da estrutura, use o aplicativo de controle para definir a opção TrackRefCounts .
Se essa opção estiver definida, o verificador controlará as referências a objetos da estrutura enquanto o driver é executado. Você pode usar a extensão do depurador !wudfrefhist para exibir cada pilha de chamadas (conjunto de chamadas de função) que incrementa ou diminui a contagem de referência de um objeto. Ao examinar as chamadas AddRef e Release nessas pilhas de chamadas, você deve ser capaz de encontrar uma pilha que não diminui a contagem de referência do objeto e, portanto, causa o vazamento.
Para obter informações sobre opções adicionais de verificador, consulte Usando o verificador UMDF.
Para obter informações sobre quando excluir objetos de estrutura, consulte Gerenciando o tempo de vida dos objetos.
UMDF 2
No UMDF versão 2, referências não lançadas são raras, mas podem ocorrer devido a incompatibilidades de chamada ao usar WdfObjectReference e WdfObjectDereference.
Para testar se o driver UMDF versão 2 vaza objetos de estrutura, use o seguinte procedimento:
Siga as etapas descritas em Práticas recomendadas para configurar seu computador para depuração UMDF.
Para usar o rastreamento de tags, habilite o Verificador UMDF e manipule o rastreamento no Registro. Ambas as configurações são armazenadas na subchave Parameters\Wdf da chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<nome do driver>.
Para habilitar o verificador UMDF, defina um valor diferente de zero para VerifierOn.
Para habilitar o rastreamento de manipuladores, defina o valor de TrackHandles como o nome de um ou mais tipos de objeto ou especifique um asterisco (*) para controlar todos os tipos de objeto.
Você também pode modificar as configurações do Verificador UMDF usando o aplicativo WdfVerifier.exe .
Reinicialize, estabeleça uma conexão de depurador e use os seguintes comandos do depurador:
- !wdfkd.wdfdriverinfo 0x10 para mostrar a hierarquia de manípulos
- !wdfkd.wdftagtracker para exibir informações da tag
Se o Verificador UMDF estiver ativado, vazamentos de memória serão detetados na descarga do driver, assim como no KMDF.
Para obter informações adicionais sobre como usar contagens de referência em drivers KMDF e UMDF versão 2, consulte Ciclo de vida do objeto do Framework.