다음을 통해 공유


다양한 버전의 Windows용 드라이버 빌드

다른 버전의 Windows용 드라이버를 작성하는 경우 다음 섹션에서는 WDK(Windows 드라이버 키트), Visual Studio 및 MSBuild를 사용하여 해당 드라이버를 빌드하는 방법에 대한 몇 가지 지침을 제공합니다.

사용자 모드 및 커널 모드 드라이버를 모두 빌드하는 데 적용되는 지침

  • WDK에서 제공하는 대상 구성 및 플랫폼을 사용하여 드라이버를 빌드합니다. 항상 대상으로 지정할 Windows 버전을 지원하는 최신 버전의 WDK를 사용합니다. WDK 및 운영 체제 버전 지원에 대한 자세한 내용은 Windows 드라이버 키트의 미리 보기 버전 설치 및 Windows 드라이버 키트다운로드를 참조하세요.
  • 드라이버가 단일 버전의 Windows에서만 실행되어야 하는 경우 대상 Windows 버전과 일치하는 대상 구성 및 플랫폼용 드라이버를 빌드합니다.
  • 드라이버를 여러 버전의 Windows에서 실행하지만 최신 버전에서만 사용할 수 있는 기능이 없도록 하려면 드라이버에서 지원하려는 가장 오래된 버전의 드라이버를 빌드합니다.

Windows 7, Windows 8 또는 Windows 8.1 대상으로 하는 경우 Configuration Manager 사용하여 TargetVersion을 설정하거나 .vcxproj 파일에서 수동으로 설정합니다(예<TargetVersion>Windows7</TargetVersion>: ).

Windows 10 또는 Windows 11 대상으로 지정하는 경우 TargetVersion_NT_TARGET_VERSION 모두 설정합니다(예<TargetVersion>Windows10</TargetVersion> <_NT_TARGET_VERSION>0xA000006</_NT_TARGET_VERSION>: ).

_NT_TARGET_VERSION 값은 형식의 Sdkddkver.h 헤더 파일에 NTDDI_WIN10_*나열됩니다(예: #define NTDDI_WIN10_RS5 0x0A000006).

커널 모드 드라이버 빌드에 적용되는 지침

  • 커널 모드 드라이버를 여러 버전의 Windows에서 실행하고 드라이버에서 사용할 수 있는 기능을 동적으로 결정하려면 최신 버전의 운영 체제에 대한 빌드 구성을 사용하여 드라이버를 빌드합니다. 예를 들어 드라이버가 Windows 8.1 시작하는 모든 버전의 Windows를 지원하지만 드라이버가 운영 체제의 Windows 10 이상 버전에서 실행 중일 때 Windows 10 처음 사용할 수 있는 특정 기능을 사용하려면 대상 구성으로 Windows 10(Win10)을 지정합니다.

  • RtlIsNtDdiVersionAvailableRtlIsServicePackVersionInstalled 함수를 사용하여 런타임에 드라이버에서 사용할 수 있는 Windows 버전을 확인합니다. 자세한 내용은 다양한 버전의 Windows용 드라이버 작성을 참조하세요.

  • 드라이버가 조건부로 호출해야 하는 함수에 대한 포인터에 대한 프로토타입을 만듭니다.

  • WDM 드라이버 또는 비 KMDF 커널 모드 드라이버가 있고 Windows 8.1 또는 Windows 8 대상으로 하지만 이전 버전의 Windows에서도 실행하려는 경우 링커 $(KernelBufferOverflowLib) 옵션을 재정의해야 합니다. Windows 8 또는 Windows 8.1 구성을 선택하면 드라이버가 이전 Windows 버전에서는 사용할 수 없는 BufferOverflowFastFailK.lib와 연결됩니다. Windows 7 및 Vista의 경우 대신 BufferOverflowK.lib와 연결해야 합니다.

    MSBuild 또는 Visual Studio를 사용하여 $(KernelBufferOverflowLib) 링커 옵션을 재정의하는 두 가지 방법이 있습니다.

    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.sln
    

    Visual Studio 사용:

    메모장 또는 다른 텍스트 편집기를 사용하여 드라이버 프로젝트 파일(*.vcxproj)을 엽니다. 프로젝트 파일에서 드라이버가 지원하는 구성에 <대한 PropertyGroup> 을 찾고 다음 줄을 추가하여 기본 링커 옵션을 재정의합니다.

    XML
     
       <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
    

    예를 들어 드라이버가 Windows 8.1 및 Windows 8 디버그 및 릴리스 빌드를 지원하는 경우 해당 구성 섹션은 다음과 같습니다.

    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>

    <KernelBufferOverflowLib> 요소는 도구 집합을 가져오는 Microsoft.Cpp.props를 가져오는 요소 앞에 드라이버 프로젝트 파일에 나타나야 합니다.

    드라이버 프로젝트 파일을 수정하고 저장한 후 Visual Studio에서 프로젝트 파일을 열고 드라이버를 빌드할 수 있습니다.