Novidades para drivers WDF no Windows 10

Este tópico resume os novos recursos e melhorias para Windows driver WDF (Driver Frameworks) no Windows 10.

Windows Server 2022 inclui o KMDF (Kernel-Mode Driver Framework) versão 1.33 e o User-Mode DRIVER Framework (UMDF) versão 2.33.

Você pode usar essas versões de estrutura para criar drivers para:

  • Windows 10 (todos os SKUs)
  • Windows Server 2022

Para o histórico de versões, consulte Histórico de versão kmdf e Histórico de versão umdf. Exceto quando anotou, as referências UMDF nesta página descrevem a funcionalidade da versão 2 que não está disponível no UMDF versão 1.

Novidades no WDF para Windows Server 2022

Consulte Histórico de versão kmdf e histórico de versão umdf.

Novidades no WDF para Windows 10, versão 2004

Consulte Histórico de versão kmdf e histórico de versão umdf.

Novidades no WDF para Windows 10, versão 1903

Nenhuma funcionalidade adicionada ou alterada.

Novo no WDF para Windows 10, versão 1809

Novidades no WDF para Windows 10, versão 1803

Novidades no WDF para Windows 10, versão 1709

Consulte Histórico de versão kmdf e histórico de versão umdf.

Novidades no WDF para Windows 10, versão 1703

No Windows 10, versão 1703, o WDF inclui os seguintes aprimoramentos:

  • Novas configurações do Verificador do WDF para detectar a criação excessiva de objetos

    Em alguns casos, os objetos de estrutura são pai incorretos e não são excluídos após o uso. Com esse recurso, você pode especificar um número máximo de objetos e o que deve acontecer quando esse limite for excedido.

    Para iniciar o monitoramento, adicione os seguintes valores do Registro em: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<driver service>\Parameters\wdf

    1. Adicione um valor DWORD chamado ObjectLeakDetectionLimit com o valor de limite. Esse é o número máximo de objetos dos tipos descritos na chave ObjectsForLeakDetection.

    2. Adicione um novo REG_MULTI_SZ chamado ObjectsForLeakDetection que lista cada nome de tipo a ser confirmado. Por exemplo, você pode especificar WDFDMATRANSACTION WDFDEVICE. Para especificar todos os tipos de alça, use * como a cadeia de caracteres.

    3. Para controlar se exceder esse limite deve causar uma quebra de depuração ou uma verificação de bug, de definir a chave DbgBreakOnError.

      Por padrão, se a chave ObjectsForLeakDetection não for especificada, a estrutura monitorará WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT e WDFDEVICE.

      O limite é dimensionado com o número de dispositivos instalados, portanto, se o driver criar três objetos WDFDEVICE, o limite do Verificador do WDF será três vezes o valor especificado em ObjectLeakDetectionLimit.

      Se você especificar WDFREQUEST, o verificador contará apenas objetos WDFREQUEST que o driver cria.

      Atualmente, esse recurso não dá suporte ao acompanhamento do tipo de objeto WDFMEMORY.

  • A ferramenta SleepStudy fornece informações sobre drivers KMDF

    A ferramenta de software SleepStudy relata o número de referências de energia que um driver KMDF tem que estão impedindo que o sistema entre em sleep. Para obter mais informações, consulte Modern standby SleepStudy.

O restante desta página descreve a funcionalidade que foi adicionada Windows 10, versão 1507.

O código-fonte do WDF está disponível publicamente

  • O código-fonte do WDF agora está disponível como código-fonte aberto GitHub. Esse é o mesmo código-fonte do qual a biblioteca de runtime do WDF que é Windows 10 é criada. Você pode depurar seu driver com mais eficiência quando puder seguir as interações entre o driver e o WDF. Baixe-o em https://github.com/Microsoft/Windows-Driver-Frameworks .

  • Os arquivos de símbolos privados do WDF Windows 10 estão disponíveis por meio do Servidor de Símbolos da Microsoft.

  • Os exemplos Windows WDK (Driver Kit) 10 também são publicados no GitHub. Baixe-os em https://github.com/Microsoft/Windows-Driver-Samples .

Depuração automática de nível de origem do código-estrutura

Quando você usa o WinDbg para depurar um driver WDF no Windows 10, o WinDbg recupera automaticamente o código-fonte da estrutura do repositório GitHub público da Microsoft. Você pode usar esse recurso para passar pelo código-fonte do WDF durante a depuração e para saber mais sobre os internos da estrutura sem baixar o código-fonte em um computador local. Para obter mais informações, consulte Depurando com a Origem do WDF e Vídeo: Depurando seu driver com o código-fonte do WDF.

Conformidade universal do driver

Todos os exemplos de driver WDF e Visual Studio de driver do WDF são compatíveis Windows driver universal.

Todas as funcionalidades KMDF e UMDF 2 são compatíveis Windows driver universal.

Observe que os drivers UMDF 1 são executados somente Windows 10 para edições da área de trabalho e versões anteriores do desktop Windows. Deseja se beneficiar das funcionalidades universais do UMDF 2? Para saber como portar seu driver UMDF 1 antigo, consulte Portabilidade de um driver de UMDF 1 para UMDF 2.

Depuração e diagnosabilidade

  • Todos os drivers KMDF e UMDF 2 podem usar um IFR (Gravador de Rastreamento de Inflight) sempre disponível. Quando um driver fornece um rastreamento personalizado, o log IFR do driver contém as mensagens de rastreamento. Observe que o novo log IFR do driver é separado do log IFR da estrutura que o WDF cria para cada driver.

    É fácil ativar o IFR. Consulte IfR (Gravador de Rastreamento de Inflight) para registrar rastreamentos e Usando o Gravador de Rastreamento de Inflight em drivers KMDF e UMDF.

  • O IFR mantém um buffer circular de rastreamentos WPP na memória não pageável. Se um driver falhar, os logs serão frequentemente incluídos no arquivo de despejo de falha.

  • Se você ativar o IFR no binário do driver, o IFR estará presente e em execução durante o tempo de vida do driver. Você não precisa iniciar uma sessão de coleta de rastreamento explícita.

    • Os logs IFR são incluídos em arquivos de minidump, exceto quando o driver responsável é indeterminado ou se a falha foi um tempo excedido do host.

    • Se você tiver um depurador conectado, poderá acessar os logs IFR do driver e da estrutura emitando !wdfkd.wdflogdump.

    • Se você não tiver um depurador conectado, ainda poderá acessar ambos os logs. Para saber como, confira Vídeo: Acessando logs IFR do driver sem um depurador.

    • Ao depurar um driver UMDF, você pode mesclar logs de estrutura com logs de driver emitando: !wdfkd.wdflogdumpdrivername.dll-m

  • Logs umDF (WudfTrace.etl) e despejos agora estão localizados em %ProgramData%\Microsoft\WDF em vez de %systemDrive%\LogFiles\Wudf.

  • Novo comando do depurador: !wdfkd.wdfumtriage fornece uma exibição centrada no kernel de todos os dispositivos UMDF no sistema.

  • Você pode executar !analyze para investigar falhas de verificador umDF ou exceções sem-manuseio umDF. Isso funciona para depuração de kernel ao vivo, bem como depuração de arquivos de despejo de falha do usuário de %ProgramData%\Microsoft\WDF.

  • No KMDF e umDF 2, você pode monitorar o uso de referência de energia no depurador. Para obter informações, consulte Depurando vazamentos de referência de energia no WDF.

  • Você pode usar !wdfkd.wdfcrashdump para exibir informações de erro sobre drivers UMDF 2. Para obter mais informações, consulte !wdfkd.wdfcrashdump.

Ferramenta de Rastreamento de Desempenho para drivers WDF

Você pode usar o WPT (Windows de Toolkit) para exibir dados de desempenho para um determinado driver KMDF ou UMDF 2. Quando o rastreamento está habilitado, a estrutura gera eventos ETW para caminhos de retorno de chamada de E/S, PnP e Power. Em seguida, você pode exibir grafos na Windows Performance Analyzer (WPA) que mostram taxas de transferência de E/S, utilização da CPU e desempenho de retorno de chamada. O WPT está incluído no ADK (Kit Windows de Avaliação e Implantação).

Para obter mais informações, consulte Using the Windows performance Toolkit (WPT) with WDF.

Suporte adicional para drivers HID no UMDF

  • O UMDF agora dá suporte total a filtros HID (enumerados por HIDClass) e minidrivers. Basta por a portabilidade do driver KMDF existente ou escrever um novo filtro UMDF 2; a funcionalidade é habilitada automaticamente.

  • O minidrivers de HID de UMDF que são enumerados pela ACPI podem executar a suspensão seletiva. Para obter mais informações, consulte CREATING WDF HID minidrivers.

  • Os drivers de UMDF agora podem ser instalados na pilha HID para dispositivos de entrada de baixa latência, como Touch e mouse. Um driver para um dispositivo de entrada deve especificar a diretiva UmdfHostPriority inf. Para obter informações, consulte especificando diretivas WDF em arquivos INF.

Suporte para interrupções para dispositivos com suporte a GPIO

O UMDF não requer mais WinUSB

Novo suporte foi adicionado para drivers USB em UMDF. Um driver USB UMDF 2 não usa mais WinUSB. Para usar a nova funcionalidade, o driver define a diretiva UmdfDispatcher como NativeUSB, em vez de WinUsb. Consulte especificando diretivas WDF em arquivos INF.

Desempenho aprimorado

  • Os componentes do sistema UMDF consomem menos espaço em disco.

  • Os drivers KMDF e UMDF usam menos memória não paginável.

  • Verificação de versão de estrutura aprimorada reduz incompatibilidades de cabeçalho/biblioteca.

  • O UMDF fornece um mapeamento de buffer aprimorado para transferências de HID.