Determinando por que um driver UMDF consome uma quantidade excessiva de memória
Aviso
O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2.
Os exemplos de UMDF 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.
Para obter mais informações, consulte Introdução com UMDF.
Este tópico descreve como você pode usar as extensões do depurador Wudfext.dll em conjunto com um driver do UMDF (User-Mode Driver Framework) versão 1 para determinar por que um driver UMDF consome uma quantidade excessiva de memória.
A partir do UMDF versão 2, você deve usar as extensões do depurador Wdfkd.dll. Para obter mais informações, consulte Extensões do Windows Driver Framework (Wdfkd.dll).
Para investigar o uso de memória, use as seguintes etapas:
Exiba o objeto pendente na árvore de objetos usando a extensão de depurador UMDF !wudfext.wudfobject .
A extensão !wudfext.wudfobject exibe informações sobre um objeto WDF, que inclui suas relações pai e filho. Se você definir o bit 0 do parâmetro Flags como 1 (0x01), !wudfext.wudfobject executará um despejo recursivo da árvore de objetos com raiz no objeto que você passou. Para exibir a árvore de objetos completa, use o seguinte comando de exemplo:
!wudfext.wudfobject <IWDFDriver*> 1
Determine se você vê mais objetos pendentes do que o esperado.
Seu driver pode eventualmente vazar esses objetos (para obter mais informações sobre o vazamento de objetos WDF, consulte Determinando se um driver vaza objetos da estrutura).
Esses objetos podem estar na árvore de objetos e, portanto, eventualmente seriam liberados. No entanto, eles estão sendo acumulados desnecessariamente. Esses objetos podem exigir:
- Correções em seus objetos pai.
- Exclusão explícita usando o método IWDFObject::D eleteWdfObject .