POOL_FLAGS
必須の属性とオプションの属性と共にプール メモリの種類を指定する ULONG64 型指定された値。 ビット論理和を使用して、複数のフラグ値を組み合わせることができます。
//
// 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 を含む)