Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jika Anda menulis driver untuk versi Windows yang berbeda, bagian berikut ini menyediakan beberapa panduan tentang bagaimana Anda harus membangun driver tersebut menggunakan Windows Driver Kit (WDK), Visual Studio, dan MSBuild.
Panduan yang berlaku untuk membangun driver mode pengguna dan mode kernel
- Bangun driver Anda menggunakan konfigurasi dan platform target yang disediakan WDK. Selalu gunakan WDK versi terbaru yang mendukung versi Windows yang ingin Anda targetkan. Untuk informasi tentang WDK dan dukungan versi sistem operasi, lihat Menginstal versi pratinjau Windows Driver Kit dan Mengunduh Windows Driver Kit.
- Jika driver Anda hanya harus berjalan pada satu versi Windows, buat driver untuk konfigurasi target dan platform yang cocok dengan versi Windows target Anda.
- Jika Anda ingin driver Anda berjalan pada beberapa versi Windows, tetapi tanpa fitur yang hanya tersedia pada versi yang lebih baru, buat driver untuk versi terlama yang Anda inginkan untuk didukung driver.
Jika Anda menargetkan Windows 7, Windows 8, atau Windows 8.1, atur TargetVersion menggunakan Configuration Manager atau secara manual dalam file .vcxproj, misalnya <TargetVersion>Windows7</TargetVersion>
.
Jika Anda menargetkan Windows 10 atau Windows 11, atur TargetVersion dan _NT_TARGET_VERSION, misalnya <TargetVersion>Windows10</TargetVersion> <_NT_TARGET_VERSION>0xA000006</_NT_TARGET_VERSION>
.
_NT_TARGET_VERSION variabel tercantum dalam file header Sdkddkver.h dalam bentuk NTDDI_WIN10_*
, seperti misalnya #define NTDDI_WIN10_RS5 0x0A000006
.
Panduan yang berlaku untuk membangun driver mode kernel
Jika Anda ingin driver mode kernel Anda berjalan pada beberapa versi Windows dan secara dinamis menentukan fitur yang tersedia untuk driver, bangun driver menggunakan konfigurasi build untuk versi terbaru sistem operasi. Misalnya, jika Anda ingin driver mendukung semua versi Windows yang dimulai dengan Windows 8.1, tetapi untuk menggunakan fitur tertentu yang pertama kali tersedia di Windows 10 ketika driver Anda berjalan pada Windows 10 atau versi yang lebih baru dari sistem operasi, tentukan Windows 10 (Win10) sebagai konfigurasi target.
Gunakan fungsi RtlIsNtDdiVersionAvailable dan RtlIsServicePackVersionInstalled untuk menentukan versi Windows yang tersedia untuk driver Anda pada waktu proses. Untuk informasi selengkapnya, lihat Menulis driver untuk versi Windows yang berbeda.
Buat prototipe untuk penunjuk ke fungsi yang harus dipanggil driver Anda dengan kondisi tertentu.
Jika Anda memiliki driver WDM, atau driver mode kernel non-KMDF, dan Anda menargetkan Windows 8.1 atau Windows 8 tetapi juga ingin berjalan pada versi Windows yang lebih lama, Anda perlu mengambil alih opsi linker $(KernelBufferOverflowLib). Ketika Anda memilih konfigurasi Windows 8 atau Windows 8.1, driver ditautkan dengan BufferOverflowFastFailK.lib, yang tidak tersedia di versi Windows sebelumnya. Untuk Windows 7 dan Vista, Anda harus menautkan dengan BufferOverflowK.lib sebagai gantinya.
Ada dua cara untuk mengambil alih opsi penghubung $(KernelBufferOverflowLib), menggunakan MSBuild atau Visual Studio.
Menggunakan 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
Menggunakan Visual Studio:
Menggunakan Notepad, atau editor teks lain, buka file proyek driver (*.vcxproj). Dalam file proyek, temukan <PropertyGroup> untuk konfigurasi yang didukung driver Anda, dan tambahkan baris berikut untuk mengambil alih opsi linker default:
XML <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
Misalnya, jika driver Anda mendukung debug Windows 8.1 dan Windows 8 dan build rilis, bagian konfigurasi tersebut akan terlihat seperti berikut:
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>
Elemen <KernelBufferOverflowLib> harus muncul dalam file proyek driver sebelum elemen yang mengimpor Microsoft.Cpp.props, yang mengimpor toolset.
Setelah memodifikasi dan menyimpan file proyek driver, Anda dapat membuka file proyek di Visual Studio dan membangun driver.