Compartilhar via


Problemas conhecidos do Kit de Driver do Windows (WDK)

Este tópico detalha problemas conhecidos relacionados ao WDK.

WDK para Windows 11, versão 24H2

Reiniciar após o provisionamento

Após o provisionamento e a implantação, a máquina destino não consegue reiniciar após as etapas de implantação.

Suporte a SxS do driver ARM64 WDK

Quando o kit do Windows 11, versão 24H2 e o kit do Windows 11, versão 22H2 estão instalados em uma máquina ARM64, a criação de um driver KMDF para ARM64 com TargetPlatformVersion definido como Windows 11, versão 22H2 falha com WdfDriverEntry.lib(stub.obj) : error LNK2001: unresolved external symbol.

Falha na instalação da extensão WDK

Se você estiver usando o Visual Studio versão 17.11.0 ou posterior, desmarque a caixa de seleção de extensão de instalação ao instalar o WDK.

WDK para Windows 11, versão 22H2

Erro de serviço na inicialização

Se você instalou o Windows 11 original, versão 22H2 WDK entre maio e agosto de 2022 (versão 10.0.22621.1), a seguinte mensagem de erro será exibida ao iniciar o Visual Studio com o WDK.

O pacote Microsoft.Windows.Tools.WinIDE.Debugger.DebuggerPackage, DebuggerPackage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null não foi carregado corretamente.

Esse problema foi corrigido no WDK versão 10.0.22621.382. Você pode desinstalar o WDK e, em seguida, reinstalar o mais recente usando as instruções em Baixar o Kit de Driver do Windows.

O depurador no Visual Studio não funciona

Não é possível depurar drivers na interface do Visual Studio ao usar o Visual Studio 2022 versão 17.2.0 e 17.3 com o Windows 11, versão 22H2 WDK (10.0.22621.382). Para contornar o problema, siga um destes procedimentos: atualize o Visual Studio para 17.4.1 ou posterior, depure com WinDbg ou use uma versão do Visual Studio anterior à 17.2.0. A seguinte mensagem de erro está relacionada a esse problema:

QueryBuildManagerBusyEx deve ser chamado na interface do usuário.

Os coinstaladores redistribuíveis do WDF não funcionam

A partir desta versão, os coinstaladores redistribuíveis do WDF não são mais aceitos. Especificamente, em um computador que tenha o Windows 11, versão 22H2 WDK e um WDK mais antigo, ao criar um driver WDF 1.11, msbuild falha porque não é possível localizar o coinstalador do WDF.

Para corrigir esse problema, antes de instalar o Windows 11, versão 22H2 WDK, faça backup da pasta \Program files (x86)\windows kit\10\redist\wdf e restaure-a depois. Como alternativa, se você já tiver instalado o Windows 11, versão 22H2 WDK, instale o arquivo MSI na pasta Componentes redistribuíveis do WDK 8 redistribuíveis em um computador separado e copie a redist pasta na pasta acima. Para obter mais informações, consulte Componentes da estrutura redistribuível

WDK para Windows 10, versão 2004

Problema nas funções ExAllocatePoolZero, ExAllocatePoolQuotaZero e ExAllocatePoolPriorityZero CORRIGIDO

Em maio de 2020, a OSR descobriu que o novo suporte de nível inferior para anulação automática de alocações de pool tinha um problema que poderia fazer com que a uma alocação não seja inicializada do zero em sistemas que executam o Windows 10, versão 1909. Isso agora foi corrigido com uma atualização de segurança do WDK para Windows 10, versão 2004 e do Enterprise WDK (EWDK) para Windows 10, versão 2004 em 16 de dezembro. A Microsoft aproveitou a atualização de segurança e atualizou o EWDK para incluir as ferramentas de compilação do Visual Studio 16.7. A Microsoft recomenda que todos os desenvolvedores de drivers desinstalem o SDK original e o WDK (versão 2004) e instalem o SDK de atualização e o WDK ou o EWDK.

Para garantir que houvesse uma solução de segurança completa em vigor, uma correção do sistema operacional foi lançada para o Windows 10, versão 1909 em novembro, portanto, se houvesse um driver criado com o problema de segurança, o sistema operacional estaria protegido contra ele.

Além de baixar o WDK/EWDK atualizado, a Microsoft recomenda que todos os drivers alternem todas as alocações do kernel para usar as novas DDIs de anulação do pool que retornam memória zerada por padrão. Isso aumentará a segurança e a confiabilidade do driver. Para ajudar nessa transição, a Microsoft criou uma regra do Driver Verifier Estático que está disponível na visualização do Windows 10 WDK versões 20236 e posteriores. A regra identificará todas as instâncias no código-fonte de um driver em que as DDIs de alocação do pool antigas estão sendo usadas e recomendará substituí-las pela nova DDI equivalente mais segura. A regra é aplicável a drivers baseados em WDM, WDF e NDIS.

A instalação do WDK não habilita mais as mitigações do Spectre para todos os projetos C++, como visto no WDK 1903

Embora a instalação do WDK habilite a mitigação do Spectre por padrão para todos os drivers, ela não os habilita mais para todos os projetos C++.

Erro "Um WDK correspondente ao destino '10.0.19041.0' não foi encontrado".

Ao selecionar [Versão do SDK do Windows] para "10.0 (versão mais recente instalada)" com WDK 10.0.19041.0 causa o erro "Um WDK correspondente à versão de destino '10.0.19041.0' não foi encontrado", mesmo se a versão do SDK estiver instalada.

Solução alternativa: na página de propriedades do projeto de driver (Propriedades de Configuração >Geral) defina Versão do SDK do Windows como $(LatestTargetPlatformVersion). Se essa opção não estiver disponível para seleção, escolha a opção herdar do pai ou padrão do projeto.

O EWDK e o SDV em execução no servidor têm requisitos do .NET

A execução do Driver Verifier Estático a partir do EWDK exige o .Net Framework 4.7.2. Dependendo da versão do Windows no sistema, o .NET pode estar instalado, pode estar instalado, mas precisa ser habilitado ou pode não estar instalado. Para obter mais informações sobre qual versão do .NET está instalada ou o estado da instalação do .NET, consulte Versões e dependências do .NET Framework.

A geração de DVL falha com System.IO.FileNotFoundException

Ao tentar criar um DVL (log de verificação de driver), o seguinte erro será apresentado:

Unhandled Exception: System.IO.FileNotFoundException: 
Could not load file or assembly 
'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
or one of its dependencies. 
The system cannot find the file specified.

Isso pode ocorrer nos ambientes de linha de comando e de GUI. Esse problema é resolvido em uma versão futura do WDK e pode ser visto no Windows Insider Preview WDK. Infelizmente, não existe nenhuma solução alternativa para a versão atual.

O SDV falhará no EWDK se o VS não estiver instalado

O SDV tem uma dependência de VCRUNTIME140D.dll como parte do Visual Studio. Dessa forma, a execução do EWDK em uma máquina sem o VS instalado falhará. Instale o Visual Studio no computador para contornar esse problema.

O Driver Verifier não é habilitado/desabilitado ao usar o gerenciador de testes do WDK

O Driver Verifier não é habilitado/desabilitado quando os testes Fundamentais do dispositivo são executados usando o Gerenciador de Testes do WDK.

Solução alternativa: na máquina cliente, habilite/desabilite manualmente o verificador de driver de acordo com estas instruções.

Instalações lado a lado do WDK do Windows 10, versão 2004 e WDK Windows 10, versão 1903 ou versão 1803

Com as duas versões dos kits instaladas no mesmo PC, o recurso "Implantar driver" não funcionará para versões mais antigas.

Solução alternativa: use o 1803 em uma máquina separada se o recurso Implantar driver for necessário.

Os testes do WDTF (Windows Device Testing Framework) agora só são executados em sistemas com versões correspondentes do Windows 10 como o WDK

No WDK para Windows 10, versão 1809, foram feitas alterações no WDTF para oferecer suporte a esta versão do Windows 10, versão 1809. O efeito disso é que o WDTF não será mais executado no sistema operacional de nível inferior. A alteração continua com o WDK para Windows 10, versão 2004.

Alternativa para testes de nível inferior

Os testes do WDTF no WDK para Windows 10, versão 1803 podem ser executados em versões anteriores do Windows.

APIValidator

Em uma máquina com arquitetura x86, o APIValidator não pode ser executado em binários x64. Na criação de drivers x64 em uma máquina x86, o APIValidator deve ser desativado.

Solução alternativa:

  1. Acesse a página de propriedades da solução de driver.

  2. Selecione APIValidator, em seguida Geral e altere Executar ApiValidator de Sim para Não.

O WDK em execução em sistemas Windows 7 requer KB 3033929

Você deve instalar o Comunicado de Segurança da Microsoft 3033929 (KB3033929) antes de instalar o WDK em sistemas que executam o Windows 7. É possível baixar o KB3033929 a partir do Central de Download da Microsoft.

A instalação do WDK gera um erro do Visual Studio informando que o componente do suplemento já está instalado

Essa mensagem de erro poderá ser vista se o WDK estiver desinstalado, mas a extensão de drivers do WDK para Visual Studio não.

Resolução: no Visual Studio, acesse o menu suspenso Extensão, escolha Gerenciar Extensões, selecione o Kit de Driver do Windows e clique em Desinstalar.

Perguntas frequentes

Como saber se as versões do WDK ou do EWDK que tenho contêm a correção para anulação das alocações de pool?

Em Configurações do Sistema acesse Adicionar ou Remover programas, procure Kit de Driver do Windows e anote a versão. O WDK original para Windows 10, versão 2004 tem a versão 10.0.19041.1, a versão atualizada do WDK é 10.0.19041.685. Para o EWDK, depois de iniciar o ambiente EWDK, observe o título da janela de comando. A versão atualizada conterá vb_release_svc_prod1.19041.685. Além disso, ao examinar as variáveis de ambiente, a variável BuildLab deve exibir vb_release_svc_prod1.19041.685.

O Software Development Kit do Windows (SDK do Windows) também foi atualizado, isso também é necessário?

Não, no entanto, o Software Development Kit do Windows (SDK do Windows) atualizado contém uma correção para onecore.lib que pode ser útil ter. Além disso, geralmente é uma boa ideia manter o SDK e o WDK alinhados.

Se eu já tiver o WDK para Windows 10, versão 2004 instalado, preciso desinstalá-lo antes de instalar a versão atualizada?

É altamente recomendável que, se você tiver o SDK e o WDK originais do 2004, eles sejam desinstalados e o SDK de atualização de segurança e o WDK sejam instalados. Dito isso, se o WDK atualizado for instalado sobre o WDK original, a versão atualizada substituirá a original. Observação: neste cenário "Adicionar ou remover programas", as duas versões serão listadas.