POOL_FLAGS
Nilai berjenis ULONG64 yang menentukan jenis memori kumpulan bersama dengan atribut yang diperlukan dan opsional. Beberapa nilai bendera dapat digabungkan menggunakan bit-wise OR.
//
// POOL_FLAG values
//
// Low 32-bits of ULONG64 are for required parameters (allocation fails if they
// cannot be satisfied).
// High 32-bits of ULONG64 is for optional parameters (allocation succeeds if
// they cannot be satisfied or are unrecognized).
//
#define POOL_FLAG_REQUIRED_START 0x0000000000000001UI64
#define POOL_FLAG_USE_QUOTA 0x0000000000000001UI64 // Charge quota
#define POOL_FLAG_UNINITIALIZED 0x0000000000000002UI64 // Don't zero-initialize allocation
#define POOL_FLAG_SESSION 0x0000000000000004UI64 // Use session specific pool
#define POOL_FLAG_CACHE_ALIGNED 0x0000000000000008UI64 // Cache aligned allocation
#define POOL_FLAG_RESERVED1 0x0000000000000010UI64 // Reserved for system use
#define POOL_FLAG_RAISE_ON_FAILURE 0x0000000000000020UI64 // Raise exception on failure
#define POOL_FLAG_NON_PAGED 0x0000000000000040UI64 // Non paged pool NX
#define POOL_FLAG_NON_PAGED_EXECUTE 0x0000000000000080UI64 // Non paged pool executable
#define POOL_FLAG_PAGED 0x0000000000000100UI64 // Paged pool
#define POOL_FLAG_RESERVED2 0x0000000000000200UI64 // Reserved for system use
#define POOL_FLAG_RESERVED3 0x0000000000000400UI64 // Reserved for system use
#define POOL_FLAG_REQUIRED_END 0x0000000080000000UI64
#define POOL_FLAG_OPTIONAL_START 0x0000000100000000UI64
#define POOL_FLAG_SPECIAL_POOL 0x0000000100000000UI64 // Make special pool allocation
#define POOL_FLAG_OPTIONAL_END 0x8000000000000000UI64
Bendera yang Diperlukan
Bendera yang diperlukan harus dikenali dan dipenuhi oleh alokator kumpulan. Jika alokator tidak mengenali bendera atau tidak dapat membuat alokasi memenuhi semua bendera yang diperlukan, alokasi gagal.
Nama | Deskripsi |
---|---|
POOL_FLAG_USE_QUOTA | Bendera ini diteruskan oleh driver tingkat tertinggi yang mengalokasikan memori untuk memenuhi permintaan dalam konteks proses yang awalnya membuat permintaan I/O. Driver tingkat bawah tidak perlu menentukan bendera ini. |
POOL_FLAG_UNINITIALIZED | Biarkan alokasi tidak diinisialisasi. Isi alokasi tidak ditentukan. Driver harus sangat berhati-hati untuk tidak pernah menyalin memori yang tidak diinisialisasi ke tujuan yang tidak tepercaya (mode pengguna, melalui jaringan, dll.). |
POOL_FLAG_SESSION | Dicadangkan untuk sistem operasi. |
POOL_FLAG_CACHE_ALIGNED | Cache menyelaraskan alokasi kumpulan. Peringatan: bendera ini diperlakukan sebagai upaya terbaik dan tidak boleh digunakan jika alokasi selaras cache diperlukan untuk kebenaran program. |
POOL_FLAG_RESERVED1 | Dicadangkan untuk penggunaan internal. |
POOL_FLAG_RAISE_ON_FAILURE | Ajukan pengecualian jika alokasi tidak dapat dipenuhi. |
POOL_FLAG_NON_PAGED | Buat alokasi di kumpulan non-halaman. |
POOL_FLAG_NON_PAGED_EXECUTE | Buat alokasi di kumpulan yang dapat dieksekusi non-halaman. |
POOL_FLAG_PAGED | Buat alokasi di kumpulan halaman. Ini dapat dieksekusi pada x86, tidak dapat dieksekusi pada semua platform lain. |
POOL_FLAG_RESERVED2 | Dicadangkan untuk penggunaan internal. |
POOL_FLAG_RESERVED3 | Dicadangkan untuk penggunaan internal. |
Bendera Opsional
Bendera opsional dipenuhi oleh alokator kumpulan secara oportunistik. Jika alokator tidak mengenali bendera opsional, abaikan bendera tersebut. Jika alokator tidak dapat memenuhi bendera opsional, bendera tersebut mungkin atau mungkin tidak berhasil tergantung pada semantik bendera tertentu.
Nama | Deskripsi |
---|---|
POOL_FLAG_SPECIAL_POOL | Buat alokasi di kumpulan khusus (digunakan untuk penelusuran kesalahan). Jika kumpulan khusus tidak dapat digunakan, alokator akan mencoba menggunakan kumpulan normal. |
Persyaratan
Header: wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)