POOL_FLAGS
ULONG64 型別值,指定集區記憶體的類型以及必要和選擇性屬性。 您可以使用位 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
必要旗標
集區配置器必須辨識並滿足必要的旗標。 如果配置器無法辨識旗標,或無法讓配置滿足所有必要旗標的配置失敗。
名稱 | 描述 |
---|---|
POOL_FLAG_USE_QUOTA | 此旗標會由最高層級驅動程式傳遞,這些驅動程式會配置記憶體以滿足原本發出 I/O 要求之進程內容中的要求。 較低層級的驅動程式不需要指定此旗標。 |
POOL_FLAG_UNINITIALIZED | 讓配置保持未初始化。 配置的內容不確定。 驅動程式必須非常小心,不要將未初始化的記憶體複製到不受信任的目的地, (使用者模式、透過網路等。) 。 |
POOL_FLAG_SESSION | 保留給作業系統。 |
POOL_FLAG_CACHE_ALIGNED | 快取對齊集區配置。 警告:此旗標會被視為最佳作法,而且如果程式正確性需要快取對齊的配置,則不應該使用它。 |
POOL_FLAG_RESERVED1 | 保留供內部使用。 |
POOL_FLAG_RAISE_ON_FAILURE | 如果無法滿足配置,請引發例外狀況。 |
POOL_FLAG_NON_PAGED | 在非分頁集區中進行配置。 |
POOL_FLAG_NON_PAGED_EXECUTE | 在非分頁的可執行檔集區中進行配置。 |
POOL_FLAG_PAGED | 在分頁集區中進行配置。 這是 x86 上的可執行檔,所有其他平臺上都是非可執行檔。 |
POOL_FLAG_RESERVED2 | 保留供內部使用。 |
POOL_FLAG_RESERVED3 | 保留供內部使用。 |
選擇性旗標
集區配置器不盡意地滿足選擇性旗標。 如果配置器無法辨識選擇性旗標,則會忽略它。 如果配置器無法滿足選擇性旗標,它可能會或可能不成功,視特定旗標的語意而定。
名稱 | 描述 |
---|---|
POOL_FLAG_SPECIAL_POOL | 在用於偵錯) 的特殊集區 (配置。 如果無法使用特殊集區,配置器將會嘗試使用一般集區。 |
規格需求
標頭:wdm.h (包含 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h)