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.
Untuk membangun biner driver tunggal yang berjalan di Windows 8 dan di versi Windows yang lebih lama, gunakan mekanisme keikutsertaan POOL_NX_OPTIN. Ini adalah bantuan porting untuk vendor perangkat keras pihak ketiga yang menyediakan biner driver tunggal untuk mendukung beberapa versi Windows.
Untuk menggunakan mekanisme keikutsertaan ini, lakukan hal berikut:
Tentukan POOL_NX_OPTIN = 1 untuk semua file sumber yang ingin Anda ikut sertakan. Untuk melakukan ini, sertakan definisi prapemroses berikut di halaman properti yang sesuai untuk proyek driver Anda:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1Dalam rutinitas DriverEntry (atau setara), sertakan panggilan fungsi berikut:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);Panggilan ini harus terjadi sebelum driver melakukan alokasi apa pun yang menggunakan jenis kumpulan NonPagedPool atau melakukan panggilan apa pun ke rutinitas ExInitializeNPagedLookasideList. ExInitializeDriverRuntime adalah fungsi sebaris paksa dan dapat dipanggil pada Windows 8 atau versi Windows yang lebih baru.
Untuk sebagian besar driver, kedua tugas ini cukup untuk mengaktifkan mekanisme keikutsertaan untuk biner driver tunggal.
Detail implementasi
POOL_NX_OPTIN bekerja dengan mengganti NonPagedPool dengan variabel POOL_TYPE global, ExDefaultNonPagedPoolType, yang diinisialisasi baik untuk NonPagedPoolNx (untuk Windows 8 dan versi Windows yang lebih baru) atau nonPagedPoolExecute (untuk versi Windows sebelumnya). Mekanisme keikutsertaan ini memungkinkan driver mode kernel Anda berjalan baik pada Windows 8, dengan perlindungan kumpulan NX yang ditingkatkan, dan pada versi Windows yang lebih lama, yang tidak mendukung kumpulan NX. Makro yang mengonversi instans nama konstanta NonPagedPool menjadi NonPagedPoolNx juga mengonversi instans NonPagedPoolCacheAligned menjadi NonPagedPoolNxCacheAligned.
Dukungan untuk pustaka statis (proyek.lib)
Anda dapat menggunakan mekanisme keikutsertaan POOL_NX_OPTIN untuk proyek .lib, tetapi proyek yang ditautkan ke .lib umumnya juga harus menggunakan POOL_NX_OPTIN. Minimal, proyek yang mengimplementasikan rutinitas DriverEntry harus berisi panggilan fungsi berikut:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);