POOL_FLAGS
Ein ULONG64-typisierter Wert, der den Typ des Poolspeichers zusammen mit den erforderlichen und optionalen Attributen angibt. Mehrere Flagwerte können bitweise oder kombiniert werden.
//
// 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
Erforderliche Flags
Erforderliche Flags müssen vom Poolzuteilungsgeber erkannt und erfüllt werden. Wenn der Zuordnungsgeber das Flag nicht erkennt oder keine Zuordnung vornehmen kann, die alle erforderlichen Flags erfüllt, schlägt die Zuordnung fehl.
Name | BESCHREIBUNG |
---|---|
POOL_FLAG_USE_QUOTA | Dieses Flag wird von Treibern der obersten Ebene übergeben, die Arbeitsspeicher zuweisen, um eine Anforderung im Kontext des Prozesses zu erfüllen, der die E/A-Anforderung ursprünglich gestellt hat. Treiber auf niedrigerer Ebene müssen dieses Flag nicht angeben. |
POOL_FLAG_UNINITIALIZED | Lassen Sie die Zuordnung nicht initialisiert. Der Inhalt der Zuordnung ist unbestimmt. Der Treiber muss äußerst vorsichtig sein, um nicht initialisierten Arbeitsspeicher niemals in nicht vertrauenswürdige Ziele (Benutzermodus, über das Netzwerk usw.) zu kopieren. |
POOL_FLAG_SESSION | Reserviert für das Betriebssystem. |
POOL_FLAG_CACHE_ALIGNED | Die Poolzuordnung im Cache ausrichten. Warnung: Dieses Flag wird als best effort behandelt und sollte nicht verwendet werden, wenn cacheorientierte Zuordnungen für die Programmkorrigkeit erforderlich sind. |
POOL_FLAG_RESERVED1 | Für die interne Verwendung reserviert. |
POOL_FLAG_RAISE_ON_FAILURE | Lösen Sie eine Ausnahme aus, wenn die Zuordnung nicht erfüllt werden kann. |
POOL_FLAG_NON_PAGED | Nehmen Sie die Zuordnung im nicht ausgelagerten Pool vor. |
POOL_FLAG_NON_PAGED_EXECUTE | Nehmen Sie die Zuordnung im nicht ausgelagerten ausführbaren Pool vor. |
POOL_FLAG_PAGED | Nehmen Sie die Zuordnung im ausgelagerten Pool vor. Dies ist auf x86 ausführbar und auf allen anderen Plattformen nicht ausführbar. |
POOL_FLAG_RESERVED2 | Für die interne Verwendung reserviert. |
POOL_FLAG_RESERVED3 | Für die interne Verwendung reserviert. |
Optionale Flags
Optionale Flags werden vom Poolzuteilungsgeber opportunistisch erfüllt. Wenn der Zuweisungsgeber ein optionales Flag nicht erkennt, wird es ignoriert. Wenn der Zuteilungsgeber ein optionales Flag nicht erfüllen kann, kann es je nach Semantik des spezifischen Flags erfolgreich sein oder nicht.
Name | BESCHREIBUNG |
---|---|
POOL_FLAG_SPECIAL_POOL | Nehmen Sie die Zuordnung im speziellen Pool vor (für das Debuggen verwendet). Wenn der spezielle Pool nicht verwendet werden kann, versucht der Zuweisungsgeber, den normalen Pool zu verwenden. |
Anforderungen
Header: wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)