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.
Ketika Anda menggunakan kumpulan NX yang tidak di-patah di biner driver untuk Windows 8, Anda akan menemukan masalah kompatibilitas jika Anda menjalankan biner ini pada versi Windows yang lebih lama.
Windows 8 adalah versi pertama Windows yang mendukung kumpulan NX yang tidak di-halaman. Namun, sejumlah besar biner driver mode kernel yang ada tersedia untuk Windows 7 dan versi Windows yang lebih lama yang berjalan pada arsitektur prosesor x86, x64, dan IA64. Untuk mengalokasikan memori yang tidak ditugaskan, driver ini menggunakan kumpulan yang tidak di-executable sebagai gantinya kumpulan NX nonpaged. Untuk kompatibilitas mundur, biner driver mode kernel yang berjalan pada Windows 7, dan pada beberapa versi Windows sebelumnya, dan yang mengalokasikan memori dari kumpulan yang tidak dipagasi, akan berjalan pada Windows 8 tanpa modifikasi. Namun, driver ini tidak memanfaatkan ketersediaan kumpulan tidak bertumpuk NX di Windows 8.
Menjalankan Biner Driver yang Ada di Windows 8
Biner driver yang dibangun untuk Windows 7 (atau mungkin untuk versi Windows yang lebih lama), dan yang menggunakan jenis kumpulan NonPagedPool, tidak dicegah berjalan pada Windows 8. Untuk mengaktifkan kompatibilitas mundur, konstanta NonPagedPoolExecute didefinisikan memiliki nilai yang sama dengan konstanta NonPagedPool dalam enumerasi POOL_TYPE . Dengan demikian, dalam versi Windows apa pun di mana driver ini berjalan, memori yang dialokasikan driver dari kumpulan yang tidak di-expaged selalu dapat dieksekusi.
Windows 8 adalah versi pertama Windows yang mendukung arsitektur Arm. Dengan demikian, tidak ada biner driver untuk Arm yang dibangun untuk versi Windows yang lebih lama dan yang memerlukan kompatibilitas mundur. Sebagai gantinya, semua driver yang ditulis untuk Windows di Arm diharapkan untuk menentukan NonPagedPoolNx alih-alih NonPagedPoolExecute dalam alokasi kumpulan yang tidak disebarkan kecuali mereka secara eksplisit memerlukan memori yang dapat dieksekusi.
Jika driver di-port ke Arm dari x86, x64, atau IA64, mekanisme keikutsertaan POOL_NX_OPTIN_AUTO secara otomatis diterapkan selama proses build driver. Mekanisme keikutsertaan ini menggunakan pra-prosesor untuk mengganti, secara default, semua instans nama konstanta NonPagedPool dengan NonPagedPoolNx. Jika perlu, Anda dapat menggunakan mekanisme penolakan POOL_NX_OPTOUT untuk menimpa mekanisme keikutsertaan ini berdasarkan per file.
Masalah Kompatibilitas Lainnya
Jenis kumpulan NonPagedPoolNx didukung dimulai dengan Windows 8. Jangan gunakan tipe kumpulan ini dalam driver untuk versi Windows sebelumnya. Alokator kumpulan di versi Windows sebelumnya ini tidak beroperasi dengan benar ketika driver meminta alokasi dengan jenis kumpulan NonPagedPoolNx .
Dalam versi Windows sebelum Windows 8, jenis kumpulan NonPagedPoolExecute dapat digunakan secara bebas sebagai pengganti jenis kumpulan NonPagedPool. Enumerasi POOL_TYPE mendefinisikan NonPagedPool dan NonPagedPoolExecute untuk memiliki nilai yang sama.
Panduan Pemindahan Tipe Kumpulan NX
Ketika Anda memindahkan kode driver Anda ke Windows 8 atau yang lebih baru dari versi Windows yang lebih lama, ada beberapa cara untuk menambahkan dukungan untuk jenis kumpulan NonPagedPoolNx dan NonPagedPoolExecute. Dari daftar berikut, pilih pendekatan yang paling sesuai dengan kebutuhan Anda:
Jika driver Anda tidak dimaksudkan untuk berjalan pada versi Windows yang lebih lama dari Windows 8, ganti sebagian besar atau semua instans NonPagedPool dengan NonPagedPoolNx. Hanya jarang pengembang harus mengganti instans NonPagedPool dengan NonPagedPoolExecute.
Jika kode sumber driver Anda menargetkan versi Windows Windows 8 dan yang lebih lama, dan Anda mengirimkan biner driver yang berbeda untuk setiap versi, gunakan mekanisme keikutsertaan POOL_NX_OPTIN_AUTO. Pendekatan ini tidak memerlukan mengganti instans NonPagedPool di sumber driver. Untuk informasi selengkapnya, lihat Mekanisme Opt-In Kumpulan NX.
Jika kode sumber driver Anda menargetkan Windows 8 dan versi Windows yang lebih lama, dan Anda mengirim biner driver tunggal untuk berjalan pada semua versi yang didukung, gunakan mekanisme keikutsertaan POOL_NX_OPTIN. Pendekatan ini tidak memerlukan mengganti instans NonPagedPool di sumber driver. Untuk informasi selengkapnya, lihat Mekanisme Opt-In Kumpulan NX.
Dengan menggunakan salah satu dari ketiga pendekatan ini, sebagian besar driver dapat di-porting dengan cepat dan dengan sedikit usaha.
Hindari hanya mengganti semua instans NonPagedPool dalam kode driver Anda dengan NonPagedPoolExecute. Gunakan jenis kumpulan NonPagedPoolExecute hanya untuk alokasi kumpulan yang harus dapat dieksekusi (misalnya, untuk menjalankan kode yang dihasilkan oleh just-in-time, atau JIT, compiler).