Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se você estiver escrevendo drivers para diferentes versões do Windows, a seção a seguir fornece algumas diretrizes sobre como você deve criar esses drivers usando o Kit de Driver do Windows (WDK), Visual Studio e MSBuild.
Diretrizes que se aplicam à criação de drivers de modo de usuário e de modo kernel
- Crie seus drivers usando as configurações e plataformas de destino fornecidas pelo WDK. Use sempre a versão mais recente do WDK que ofereça suporte à versão do Windows que você deseja segmentar. Para obter informações sobre o WDK e o suporte à versão do sistema operativo, consulte Instalar versões de pré-visualização do Kit de Driver do Windows e Baixar o Kit de Driver do Windows.
- Se o driver deve ser executado apenas em uma única versão do Windows, crie o driver para a configuração de destino e plataforma que corresponde à sua versão do Windows de destino.
- Se pretender que o controlador seja executado em várias versões do Windows, mas sem funcionalidades disponíveis apenas em versões mais recentes, crie o controlador para a versão mais antiga que pretende que o controlador suporte.
Se você estiver visando o Windows 7, Windows 8 ou Windows 8.1, defina TargetVersion usando o Configuration Manager ou manualmente no arquivo .vcxproj, por exemplo, <TargetVersion>Windows7</TargetVersion>.
Se você estiver visando o Windows 10 ou Windows 11, defina TargetVersion e _NT_TARGET_VERSION, por exemplo, <TargetVersion>Windows10</TargetVersion> <_NT_TARGET_VERSION>0xA000006</_NT_TARGET_VERSION>.
_NT_TARGET_VERSION valores são listados no arquivo de cabeçalho Sdkddkver.h no formato NTDDI_WIN10_*, por exemplo, #define NTDDI_WIN10_RS5 0x0A000006.
Diretrizes que se aplicam à construção de drivers de modo kernel
Se você quiser que seu driver de modo kernel seja executado em várias versões do Windows e determinar dinamicamente os recursos que estão disponíveis para o driver, crie o driver usando a configuração de compilação para a versão mais recente do sistema operacional. Por exemplo, se pretender que o controlador suporte todas as versões do Windows a partir do Windows 8.1, mas para utilizar determinadas funcionalidades que foram disponibilizadas pela primeira vez no Windows 10 quando o controlador está a ser executado no Windows 10 ou em versões posteriores do sistema operativo, especifique o Windows 10 (Win10) como a configuração de destino.
Use as funções RtlIsNtDdiVersionAvailable e RtlIsServicePackVersionInstalled para determinar a versão do Windows que está disponível para o driver durante a execução. Para obter mais informações, consulte Desenvolvimento de drivers para diferentes versões do Windows.
Crie protótipos de ponteiros para funções que o controlador deve chamar condicionalmente.
Se você tiver um driver WDM ou um driver de modo kernel não KMDF e estiver visando o Windows 8.1 ou o Windows 8, mas também quiser executar em versões anteriores do Windows, precisará substituir o vinculador opção $(KernelBufferOverflowLib). Quando você seleciona configurações do Windows 8 ou Windows 8.1, o driver é vinculado com BufferOverflowFastFailK.lib, que não está disponível em versões anteriores do Windows. Para Windows 7 e Vista, você deve vincular com BufferOverflowK.lib em vez disso.
Há duas maneiras de substituir a opção de vinculador $(KernelBufferOverflowLib), usando o MSBuild ou o Visual Studio.
Usando o MSBuild:
msbuild /p:KernelBufferOverflowLib="C:\Program Files (x86)\Windows Kits\8.1\Lib\win8\km\x64\BufferOverflowK.lib" /p:platform=x64 /p:Configuration="Win8 Release" myDriver.slnUsando o Visual Studio:
Usando o bloco de notas ou outro editor de texto, abra o arquivo de projeto do driver (*.vcxproj). No arquivo de projeto, localize o <> PropertyGroup para as configurações suportadas pelo driver e adicione a seguinte linha para substituir a opção de vinculador padrão:
XML <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>Por exemplo, se o driver oferecer suporte a compilações de depuração e lançamento do Windows 8.1 e do Windows 8, essas seções de configuração terão a seguinte aparência:
XML <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration"> <TargetVersion>WindowsV6.3</TargetVersion> <UseDebugLibraries>true</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration"> <TargetVersion>WindowsV6.3</TargetVersion> <UseDebugLibraries>false</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration"> <TargetVersion>Windows8</TargetVersion> <UseDebugLibraries>true</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration"> <TargetVersion>Windows8</TargetVersion> <UseDebugLibraries>false</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup>Os elementos><KernelBufferOverflowLib devem aparecer no arquivo de projeto do driver antes do elemento que importa Microsoft.Cpp.props, que importa o conjunto de ferramentas.
Depois de modificar e salvar o arquivo de projeto de driver, você pode abrir o arquivo de projeto no Visual Studio e criar o driver.