Compartilhar via


Teste de logotipo de ferramentas estáticas

Esse teste executa uma análise estática projetada para melhorar a confiabilidade e a segurança dos drivers. Os envios de drivers no modo kernel são necessários para passar no Teste de Logotipo de Ferramentas Estáticas para certificação. O CodeQL deve ser usado para análise estática de um driver de modo kernel para envio à Microsoft para assinatura ou certificação, a fim de estar em conformidade com o Programa de Compatibilidade de Hardware do Windows.

Detalhes do teste

   
Especificações
  • Device.DevFund.StaticTools.StaticAnalysisForDrivers
Plataformas
  • Cliente do Windows 11 (x64)
  • Windows 11, Cliente (ARM64)
  • Windows Server
Versões com suporte
  • Cliente do Windows 11 (x64)
  • Windows 11, Cliente (ARM64)
  • Windows Server
Tempo de execução esperado (em minutos) 5
Categoria Desenvolvimento
Tempo limite (em minutos) 0
Requer reinicialização false
Requer configuração especial false
Tipo automático

Análise estática para Certificação de Cliente do Windows

O CodeQL é uma poderosa tecnologia de análise estática para proteger software. A combinação de um extenso conjunto de consultas de segurança de alto valor e uma plataforma robusta o tornam uma ferramenta inestimável para proteger o código de driver de terceiros.

Em um esforço para aumentar a barra de segurança do ecossistema do Windows, a Microsoft adicionou esse requisito ao Programa de Compatibilidade de Hardware do Windows, que afirma que todos os envios de driver devem usar o mecanismo CodeQL no código-fonte do driver e corrigir quaisquer consultas que devem ser corrigidas.

Esse requisito é imposto pelo Teste de Logotipo de Ferramentas Estáticas.

Consulte CodeQL e o Teste de Logotipo de Ferramentas Estáticas para obter detalhes sobre como baixar e executar o CodeQL no seu código-fonte do driver. Seguir essa página, juntamente com a seção "Geração de CodeQL e DVL" abaixo, garantirá que o Teste de Logotipo de Ferramentas Estáticas consuma corretamente os resultados da execução do CodeQL no código-fonte do driver como parte do Teste de Logotipo de Ferramentas Estáticas.

A que tipos de drivers o CodeQL e o teste do logotipo de ferramentas estáticas se aplicam?

No momento, o teste do logotipo de ferramentas estáticas requer que o CodeQL seja executado e o conjunto de consultas "Must-Fix" seja aprovado para todos os drivers em modo kernel, exceto drivers gráficos. Observe que a execução do CodeQL em drivers gráficos é altamente recomendada, mesmo que não seja obrigatória no momento. Algumas consultas também podem encontrar defeitos úteis em componentes de modo de usuário.

No futuro, pretendemos estender o teste e suas consultas para exigir resultados para drivers gráficos, drivers de modo de usuário e componentes de driver e outros componentes do pacote de drivers. Se você encontrar um comportamento inesperado ou falsos positivos executando o CodeQL em drivers gráficos ou drivers de modo de usuário, registre um problema no repositório Windows-Driver-Developer-Supplemental-Tools.

Se você estiver executando o teste em um driver gráfico, o teste será preenchido no HLK, mas aprovado por padrão. Se você estiver executando apenas em componentes de modo de usuário ou estiver enviando um pacote de driver sem código (ou seja, uma extensão inf), o teste pode não ser preenchido. Se você estiver enviando um componente em modo kernel e o teste inesperadamente não for preenchido, certifique-se de que seu driver esteja assinado para teste (consulte a nota abaixo).

Novidade na Análise Estática para a Certificação do Windows Server

Para a Certificação do Windows Server 2025, o CodeQL se tornará a ferramenta necessária para o Teste de Logotipo de Ferramentas Estáticas, isso implica que todos os envios de driver devem, no mínimo, passar todas as regras do que "deve ser corrigido" para serem aceitáveis para o WHCP. No entanto, se você estiver certificando para o Windows Server 2022 e versões inferiores; CA, SDV e CodeQL podem ser usados. Use builds do WDK com as versões correspondentes da versão do sistema operacional.

Para obter informações sobre como baixar versões diferentes do WDK, consulte Baixar o WDK (Kit de Driver do Windows). Participe do Programa Windows Insider para baixar os builds do WDK Insider Preview (https://aka.ms/wipwdk).

Geração de CodeQL e DVL (Log de Verificação de Driver)

A Microsoft está impondo o requisito de executar consultas CodeQL com o Teste de Logotipo de Ferramentas Estáticas. O Teste de Logotipo de Ferramentas Estáticas usa um DVL (Log de Verificação de Driver) para coletar resultados de diferentes análises estáticas executadas no código-fonte do driver. Esse DVL é então analisado como parte do Teste de Logotipo de Ferramentas Estáticas por meio de um teste HLK.

Os resultados do CodeQL seguirão o mesmo modelo de usar um DVL para mostrar que o driver que está sendo certificado executou as consultas CodeQL apropriadas para passar no teste HLK para certificação.

Coloque o arquivo .sarif no mesmo diretório que o arquivo .vcxproj para o qual um DVL está sendo gerado. O nome exato não importa, desde que o arquivo termine com ".sarif".

Documentação adicional

Os testes nessa área de recursos podem ter documentação adicional, incluindo informações sobre pré-requisitos, configuração e solução de problemas, que podem ser encontradas nos tópicos a seguir:

Executar o teste

Antes de executar o teste, você deve criar um DVL (Log de Verificação de Driver) executando as etapas a seguir.

  1. Execute o CodeQL, o Verificador de Driver Estático e a ferramenta Análise de Código conforme necessário no código-fonte do driver.

  2. Execute o utilitário que gera o arquivo DVL. Para obter mais informações sobre como criar um arquivo de Log de Verificação de Driver para incluir no envio, consulte Criando um Log de Verificação de Driver.

  3. Copie o arquivo DVL do computador que foi usado para criar o arquivo DVL para o computador de teste que é usado quando você executa o teste de logotipo de ferramentas estáticas. Copie o arquivo para o diretório %systemdrive%\DVL no computador de teste. Exclua o conteúdo do diretório no computador de teste antes de copiar o novo log de verificação de driver.

  4. Execute o teste de logotipo de ferramentas estáticas. Se o teste não for preenchido no HLK, verifique se o driver está assinado (veja abaixo). Como alternativa, se você não estiver enviando um arquivo .sys como parte do pacote, espera-se que o teste não seja preenchido.

Observação

O objetivo do teste de Logotipo de Ferramentas Estáticas é exigir que você, como desenvolvedor de drivers, execute o CodeQL em seu driver antes do envio para ajudar a eliminar bugs. No entanto, recebemos relatórios no passado de que o teste pedia erroneamente resultados do CodeQL para outros drivers na pilha devido a uma limitação arquitetônica, bloqueando a certificação.

Para resolver esse problema no Windows 24H2, mudamos para um modelo onde a assinatura do driver para o dispositivo em teste é verificada. Com essa alteração, os drivers da caixa de entrada do Windows não serão sinalizados pelo teste. Além disso, para desbloquear desenvolvedores que estão realizando testes HLK em dispositivos de terceiros, o teste também evitará sinalizar resultados para drivers assinados por WHCP.

Ao executar esse teste para certificação, seu driver deve ser assinado para garantir que o teste funcione corretamente. Se isso não for feito, o teste não será avisado sobre violações do CodeQL ou o teste não será enumerado.

Observação

O Teste de Logotipo de Ferramentas Estáticas requer apenas o arquivo DVL para mostrar que o código QL foi executado. O teste não exige que todas as regras sejam aprovadas. Além disso, esse trabalho deve ser executado no Servidor com Experiência Desktop. Se o teste HLK falhar ao usar o Server Core (com a mensagem de erro: "Não foi possível encontrar RoMetadata.dll"), a solução alternativa é executar no Servidor com Experiência Desktop e, em seguida, mesclar o pacote com o pacote que contém os resultados do Server Core. Informações sobre como mesclar pacotes podem ser encontradas aqui: /windows-hardware/test/hlk/user/merge-packages.

Solução de problemas

Para solucionar problemas genéricos de falhas de teste do HLK, confira Solucionar problemas de falhas de teste do Windows HLK.

Mais informações

Sintaxe de comando

Opção de comando Descrição

TE.exe /inproc /enablewttlogging /appendwttlogging Devfund_DvlTest.dll /p:WDKClass=[WDKClass] /p:DeviceClass=[DeviceClass] /p:QueryDriverNames=[QueryDriverNames]

Executa o teste.

Observação

Para obter ajuda da linha de comando para esse binário de teste, digite /?.

Lista de arquivos

Arquivo Localidade

Devfund_DvlTest.dll

<testbinroot>\OSBinRoot

Microsoft.StaticToolsLogo.ObjectModel.dll

<testbinroot>\OSBinRoot

TE.exe

<testbinroot>\OSBinRoot

Parâmetros

Nome do parâmetro Descrição do parâmetro
WDKClass Classe de Dispositivo
DeviceClass Parâmetro Device Class
QueryDriverNames Nomes de drivers esperados.