Compartilhar via


Exibindo objetos UMDF

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 para exibir informações sobre objetos usados por um driver do UMDF (User-Mode Driver Framework) versão 1.

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).

Você pode executar as seguintes etapas para exibir informações sobre objetos UMDF versão 1:

  1. Use uma das seguintes extensões de depurador UMDF para exibir pilhas de dispositivos que estão no processo de host:

    • !wudfext.umdevstacks

    • !wudfext.umdevstack conforme mostrado no exemplo a seguir:

      !wudfext.umdevstack <dev-stack-addr>

      As informações incluem objetos de driver e objetos de dispositivo para cada driver. Atualmente, o UMDF permite apenas uma pilha de dispositivos em um processo de host para que não haja diferença entre as saídas dessas duas extensões.

  2. Exiba a árvore de objetos completa usando a extensão de depurador UMDF !wudfext.wudfobject , como no exemplo a seguir:

    !wudfext.wudfobject <IWDFDriver*> 1

  3. Use a extensão de depurador UMDF !wudfext.wudfdevice, conforme mostrado no exemplo a seguir para determinar o Plug and Play (PnP) e o estado de gerenciamento de energia do dispositivo:

    !wudfext.wudfdevice <IWDFDevice*>

  4. Execute as seguintes etapas para determinar as filas associadas ao dispositivo:

    1. Use a extensão de depurador UMDF !wudfext.wudfdevicequeues para exibir as filas associadas ao dispositivo. Essa extensão mostra as propriedades da fila, o estado da fila e as solicitações de propriedade do driver.

    2. Use a extensão de depurador UMDF !wudfext.wudfqueue conforme mostrado no exemplo a seguir para obter informações sobre cada fila:

      !wudfext.wudfqueue <IWDFIoQueue*>

  5. Use a extensão de depurador UMDF !wudfext.wudfrequest para obter informações sobre uma solicitação específica. Essas informações incluem o IRP (pacote de solicitação de E/S) do modo de usuário subjacente. Nas informações de IRP do modo de usuário, você pode determinar onde a solicitação está sendo processada na pilha no momento. Você também pode usar a extensão de depurador UMDF !wudfext.umirp para obter essas informações de IRP no modo de usuário.

  6. Determine todos os destinos de E/S por:

    1. Usando a extensão de depurador UMDF !wudfext.wudfobject para exibir os objetos filho do objeto do dispositivo. Objetos de destino de E/S são objetos filho do objeto do dispositivo.

    2. Usando a extensão de depurador UMDF !wudfext.wudfiotarget conforme mostrado no exemplo a seguir para exibir informações sobre cada objeto de destino de E/S:

      !wudfext.wudfiotarget <IWDFTarget*>

      Essa extensão mostra o estado do destino e a lista de solicitações enviadas.

    No momento, não há nenhuma extensão de depurador UMDF que permita exibir todos os destinos de E/S.

  7. Use as seguintes extensões de depurador UMDF para exibir informações sobre objetos de arquivo:

    !wudfext.wudfrequest ou !wudfext.umirp
    Use a extensão de depurador ! wudfext.wudfrequest ou !wudfext.umirp para exibir arquivos que são objetos filho de objetos de dispositivo.

    !wudfext.wudffile
    Use a extensão de depurador UMDF !wudfext.wudffile , conforme mostrado no exemplo a seguir, para exibir informações sobre um arquivo de estrutura:

    !wudfext.wudffile <IWDFFile*>

    !wudfext.umfile
    Use a extensão de depurador UMDF !wudfext.umfile , conforme mostrado no exemplo a seguir, para exibir informações sobre um arquivo intra-stack UMDF (ou seja, um objeto de arquivo que um driver na pilha criou em vez de um objeto de arquivo que foi criado por um aplicativo ou por um driver em outra pilha):

    Suplemento !wudfext.umfile <>

    Em alguns casos, pode não haver um arquivo de estrutura correspondente, e as informações do IRP no modo de usuário podem incluir um arquivo intra-stack UMDF.

    As informações exibidas por !wudfext.umfile incluem todos os IRPs enfileirados no arquivo intra-stack UMDF. Somente arquivos criados pelo driver rastreiam IRPs do modo de usuário que estão na fila para esses arquivos. Para arquivos criados pelo aplicativo, o gerenciador de E/S rastreia os IRPs do modo kernel.

    !wudfext.umdevstacks e !wudfext.umdevstack
    Use a saída das extensões de depurador !wudfext.umdevstacks e !wudfext.umdevstack UMDF para exibir arquivos intra-stack UMDF pendentes que correspondem aos arquivos criados pelo driver.