Windows'un Farklı Sürümleri için Sürücü Oluşturma

Windows'un farklı sürümleri için sürücüler yazıyorsanız, aşağıdaki bölümde Windows Driver Kit (WDK), Visual Studio ve MSBuild kullanarak bu sürücüleri nasıl oluşturmanız gerektiği hakkında bazı yönergeler sağlanır.

Hem kullanıcı modu hem de çekirdek modu sürücüleri oluşturmak için geçerli olan yönergeler

  • WDK'nin sağladığı hedef yapılandırmaları ve platformları kullanarak sürücülerinizi oluşturun. WDK'nin hedeflemek istediğiniz Windows sürümünü destekleyen en son sürümünü her zaman kullanın. WDK ve işletim sistemi sürümü desteği hakkında bilgi için bkz . Windows Driver Kit'in önizleme sürümlerini yükleme ve Windows Sürücü Seti'ni indirme.
  • Sürücünüzün yalnızca tek bir Windows sürümünde çalışması gerekiyorsa, hedef Windows sürümünüzle eşleşen hedef yapılandırma ve platform için sürücü oluşturun.
  • Sürücünüzün windows'un birden çok sürümünde çalışmasını istiyorsanız ancak yalnızca yeni sürümlerde kullanılabilen özelliklere sahip değilseniz, sürücünün desteklemesini istediğiniz en eski sürümün sürücüsünü oluşturun.

Windows 7, Windows 8 veya Windows 8.1'i hedeflediyseniz, Configuration Manager'ı kullanarak veya .vcxproj dosyasında el ile TargetVersion'ı ayarlayın, örneğin <TargetVersion>Windows7</TargetVersion>.

Windows 10 veya Windows 11'i hedeflediyseniz hem TargetVersion hem de _NT_TARGET_VERSION ayarlayın, örneğin <TargetVersion>Windows10</TargetVersion> <_NT_TARGET_VERSION>0xA000006</_NT_TARGET_VERSION>.

_NT_TARGET_VERSION değerleri Sdkddkver.h üst bilgi dosyasında biçiminde NTDDI_WIN10_*listelenir, örneğin #define NTDDI_WIN10_RS5 0x0A000006.

Çekirdek modu sürücüleri oluşturmak için geçerli olan yönergeler

  • Çekirdek modu sürücünüzün windows'un birden çok sürümünde çalışmasını ve sürücü için kullanılabilen özellikleri dinamik olarak belirlemesini istiyorsanız, işletim sisteminin en son sürümü için derleme yapılandırmasını kullanarak sürücüyü derleyin. Örneğin, sürücünüzün Windows 8.1 ile başlayan tüm Windows sürümlerini desteklemesini, ancak sürücünüz işletim sisteminin Windows 10 veya sonraki sürümlerinde çalışırken Ilk olarak Windows 10'da kullanılabilir olan belirli özellikleri kullanmasını istiyorsanız, hedef yapılandırma olarak Windows 10 (Win10) belirtin.

  • Sürücünüzün çalışma zamanında kullanabileceği Windows sürümünü belirlemek için RtlIsNtDdiVersionAvailable ve RtlIsServicePackVersionInstalled işlevlerini kullanın. Daha fazla bilgi için bkz . Windows'un farklı sürümleri için sürücü yazma.

  • Sürücünüzün koşullu olarak çağırması gereken işlevlere yönelik işaretçiler için prototipler oluşturun.

  • WDM sürücüsüne veya KMDF çekirdek modu olmayan bir sürücüye sahipseniz ve Windows 8.1 veya Windows 8'i hedef alıyorsanız ancak windows'un önceki sürümlerinde de çalışmak istiyorsanız , bağlayıcı $(KernelBufferOverflowLib) seçeneğini geçersiz kılmanız gerekir. Windows 8 veya Windows 8.1 yapılandırmalarını seçtiğinizde, sürücü önceki Windows sürümlerinde bulunmayan BufferOverflowFastFailK.lib ile bağlanır. Windows 7 ve Vista için bunun yerine BufferOverflowK.lib ile bağlantı oluşturmanız gerekir.

    MSBuild veya Visual Studio kullanarak $(KernelBufferOverflowLib) bağlayıcı seçeneğini geçersiz kılmanın iki yolu vardır.

    MSBuild Kullanma:

    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'yu kullanma:

    Not Defteri'ni veya başka bir metin düzenleyicisini kullanarak sürücü proje dosyasını (*.vcxproj) açın. Proje dosyasında, sürücünüzün <desteklediği yapılandırmalar için PropertyGroup'u> bulun ve varsayılan bağlayıcı seçeneğini geçersiz kılmak için aşağıdaki satırı ekleyin:

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

    Örneğin, sürücünüz Windows 8.1 ve Windows 8 hata ayıklama ve sürüm derlemelerini destekliyorsa, bu yapılandırma bölümleri aşağıdaki gibi görünür:

    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> öğeleri, araç kümesini içeri aktaran Microsoft.Cpp.props dosyasını içeri aktaran öğeden önce sürücü proje dosyasında görünmelidir.

    Sürücü proje dosyasını değiştirip kaydettikten sonra proje dosyasını Visual Studio'da açabilir ve sürücüyü oluşturabilirsiniz.