Comandos do Driver Verifier estático (MSBuild)
Você pode executar o Verificador de Driver Estático (SDV) em uma janela do Prompt de Comando do Visual Studio, instalando o WDK (Kit de Driver do Windows) ou executando o Enterprise Windows Driver Kit (EWDK). Navegue até o diretório onde o arquivo de projeto do driver ou o arquivo de projeto da biblioteca está armazenado. Os parâmetros podem aparecer em qualquer ordem na linha de comando.
Importante
O SDV não é mais suportado e o SDV não está disponível nas versões WDK ou EWDK do Windows 24H2. Ele não está disponível em WDKs mais recentes que a compilação 26017 e não está incluído no Windows 24H2 RTM WDK.
O SDV ainda pode ser usado baixando o Windows 11, versão 22H2 EWDK (lançado em 24 de outubro de 2023) com as ferramentas de compilação do Visual Studio 17.1.5 de Baixar o Kit de Driver do Windows (WDK). Recomenda-se apenas o uso do Enterprise WDK para executar o SDV. Usar versões mais antigas do WDK padrão em conjunto com versões recentes do Visual Studio não é recomendado, pois isso provavelmente resultará em falhas de análise.
No futuro, o CodeQL será a principal ferramenta de análise estática para drivers. O CodeQL fornece uma linguagem de consulta poderosa que trata o código como um banco de dados a ser consultado, simplificando a gravação de consultas para comportamentos, padrões e muito mais específicos.
Para obter mais informações sobre como usar o CodeQL, consulte CodeQL e o teste de logotipo de ferramentas estáticas.
msbuild /t:sdv /p:Inputs="Parameters" ProjectFile /p:Configuration=configuration /p:Platform=platform
Você deve selecionar uma configuração de versão (por exemplo, /p:Configuration="Windows 7 Release"). Para obter a lista de configurações de versão com suporte, consulte Criando um driver. A plataforma pode ser Win32 (para x86) ou x64 (por exemplo, /p:Platform=Win32).
Observação
Certifique-se de verificar o plano de gerenciamento de energia do computador para garantir que o computador não entrará em estado de suspensão durante a análise.
Parâmetros
/scan
Verifica o código-fonte do driver em busca de declarações de tipo de função de função. Para obter informações sobre como declarar as funções de retorno de chamada fornecidas pelo driver e as rotinas de despacho, consulte Usando declarações de tipo de função de função. Durante essa verificação, o SDV tenta detectar os pontos de entrada do driver que ele precisa para verificar o driver. Ele registra os resultados da verificação em Sdv-map.h, um arquivo que ele cria no diretório de projeto do driver.
Para obter mais informações, consulte Preparando seu código-fonte.
/check:Regra da regra | ,...
Inicia uma verificação com a(s) regra(s) especificada(s). Você pode especificar mais de uma regra separando cada regra com uma vírgula. Execute o comando /check: e especifique o arquivo de projeto do Visual Studio do driver (*.vcxproj).
Regra é o nome de uma regra ou um padrão de nome de regra que inclui caracteres curinga (*) para representar um ou mais caracteres. Quando usado sozinho, o caractere curinga (*) representa todas as regras.
/check:RuleList.sdv
Inicia uma verificação com as regras no arquivo de lista de regras especificado. Você pode listar apenas um arquivo com esse parâmetro. No arquivo de lista de regras, cada linha pode ser o nome de uma regra ou pode ser um caractere curinga (*), que representa todas as regras SDV. Execute o comando /check:RuleList.sdv e especifique o arquivo de projeto do Visual Studio do driver (*.vcxproj).
RuleList.sdv é o caminho totalmente qualificado e o nome de arquivo de um arquivo de lista de regras. O arquivo deve ter a extensão de nome de arquivo .sdv . A menos que o arquivo esteja no diretório local, o caminho é necessário. Se o caminho ou nome de arquivo incluir espaços, você deverá incluir RuleList.sdv entre aspas.
Se você especificar a opção /check: sem especificar uma regra, o SDV será executado com a regra padrão definida para o modelo de driver.
/lib
Processa a biblioteca no diretório atual. O SDV chama MSBuild.exe para compilar e compilar a biblioteca para uso externo e gera os arquivos necessários para incluir a biblioteca na verificação do driver.
Use esse parâmetro antes de verificar os drivers que exigem a biblioteca. Execute o comando msbuild /t:sdv /p:Inputs="/lib" e especifique o arquivo de projeto do Visual Studio (*.vcxproj) para a biblioteca.
Para obter mais informações sobre o uso e o efeito do parâmetro /lib, consulte Processamento de biblioteca no verificador de driver estático.
/vista
Abre o Verificador de Driver Estático. Execute os comandos /view e especifique o arquivo de projeto do Visual Studio do driver (*.vcxproj).
Os resultados estarão disponíveis assim que uma verificação for concluída e permanecerão disponíveis até que você use um comando /clean para excluir os arquivos SDV do diretório de projeto do driver.
/limpo
Exclui arquivos SDV do diretório. Como esses arquivos são usados para gerar a exibição do Relatório do Verificador de Driver Estático, o comando /clean também exclui o relatório da verificação.
Execute um comando /clean e especifique o arquivo de projeto do Visual Studio (*.vcxproj) para o driver ou biblioteca. O comando exclui arquivos SDV somente para o projeto especificado.
Execute um comando /clean para um projeto de driver antes de cada verificação.
Execute um comando /clean para uma biblioteca quando os arquivos da biblioteca estiverem desatualizados, como quando o código da biblioteca for alterado.
Um comando /clean não remove o arquivo Sdv-map.h, se o sinalizador aprovado estiver definido como true no arquivo Sdv-map.h (Approved=true). O SDV pode então usar esse arquivo para verificações futuras.
/?
Exibe o uso de comandos SDV. Os comandos que usam esse parâmetro não precisam ser executados em uma janela do ambiente de compilação.
Comentários
A execução do msbuild /t:/sdv p:/Inputs= /? sem parâmetros exibe o uso dos comandos SDV.
Um comando /clean exclui os arquivos que o SDV usa para criar a exibição do Relatório do Verificador de Driver Estático para uma verificação. Depois de executar esse comando, a exibição do Relatório do Verificador de Driver Estático para a verificação não está mais disponível.
Exemplos
Para executar o SDV usando todas as regras nos arquivos de driver no diretório local do projeto mydriver:
msbuild /t:sdv /p:Inputs="/check:*" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32
Para executar o SDV usando a regra CancelSpinLock nos arquivos de driver no diretório local:
msbuild /t:sdv /p:Inputs="/check:CancelSpinLock" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32
Para executar o SDV usando a regra especificada no arquivo de lista de regras Rules1.sdv no diretório D:\SDV:
msbuild /t:sdv /p:Inputs="/check:D:\SDV\Rules1.sdv" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32
Para executar o SDV novamente, desta vez usando a opção /clean:
msbuild /t:sdv /p:Inputs="/clean" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32
Para exibir o Verificador de Driver Estático para que você possa exibir os resultados da verificação mais recente do driver no diretório local:
msbuild /t:sdv /p:Inputs="/view" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32
Tópicos relacionados
Usando o verificador de driver estático para localizar defeitos nos drivers do Windows