ExAllocatePoolPriorityZero-Funktion (wdm.h)

Achtung

Microsoft ist sich eines Problems mit ExAllocatePoolPriorityZero bewusst, das dazu führen kann, dass eine Zuordnung unter Windows 10 Version 1909 nicht auf Null gesetzt wird. Dieses Problem wurde in einer Sicherheitsaktualisierung des WDK für Windows 10 Version 2004 und des Enterprise WDK (EWDK) für Windows 10, Version 2004, am 16. Dezember 2020 behoben. Informationen zum Herunterladen des neuesten WDK finden Sie unter Herunterladen des Windows Driver Kit (WDK).

Diese Routine ist ein Wrapper für und eine empfohlene Ersatzoption für ExAllocatePoolWithTagPriority.

ExAllocatePoolPriorityZero ordnet Poolspeicher des angegebenen Typs zu.

Er ist identisch mit ExAllocatePoolWithTagPriority , aber null initialisiert den zugeordneten Arbeitsspeicher. Wenn dies nicht gewünscht ist, verwenden Sie stattdessen ExAllocatePoolPriorityUninitialized .

Syntax

PVOID ExAllocatePoolPriorityZero(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag,
  EX_POOL_PRIORITY                               Priority
);

Parameter

PoolType

Der Typ des zuzuordnenden Poolarbeitsspeichers. Eine Beschreibung der verfügbaren Speichertypen des Pools finden Sie unter POOL_TYPE.

Sie können den Enumerationswert ändern, indem Sie ein bitweises OR mit dem in wdm.hdefinierten flag POOL_RAISE_IF_ALLOCATION_FAILURE ausführen. Dieses Flag bewirkt, dass eine Ausnahme ausgelöst wird, wenn die Anforderung nicht erfüllt werden kann. Die Verwendung dieses Flags wird nicht empfohlen, da es teuer ist.

Auf ähnliche Weise können Sie den PoolType-Wert ändern, indem Sie bitweise-ORing diesen Wert mit dem flag POOL_COLD_ALLOCATION (ebenfalls definiert in wdm.h) als Hinweis an den Kernel ändern, um den Speicher von Seiten zuzuweisen, die wahrscheinlich schnell ausgelagert werden. Um den Speicher des residenten Pools so weit wie möglich zu reduzieren, sollten Sie nicht häufig auf diese Zuordnungen verweisen. Das flag POOL_COLD_ALLOCATION ist nur eine Empfehlung.

NumberOfBytes

Die Anzahl der zu belegenden Bytes.

Tag

Das Pooltag, das für den zugeordneten Arbeitsspeicher verwendet werden soll. Geben Sie das Pooltag als Zeichenliteral ungleich 0 von 0 bis vier Zeichen an, Tag1die durch einfache Anführungszeichen getrennt sind (z. B. ). Die Zeichenfolge wird in der Regel in umgekehrter Reihenfolge angegeben (z. B 1gaT. ). Jedes ASCII-Zeichen im Tag muss ein Wert im Bereich 0x20 (Leerzeichen) sein, um 0x7E (Tilde) zu erhalten. Jeder Zuordnungscodepfad sollte ein eindeutiges Pooltag verwenden, um Debuggern und Prüfern beim Identifizieren des Codepfads zu helfen.

Priority

Ein EX_POOL_PRIORITY Enumerationswert, der die Priorität dieser Anforderung angibt.

Rückgabewert

ExAllocatePoolPriorityZero gibt NULL zurück, wenn im freien Pool nicht genügend Arbeitsspeicher vorhanden ist, um die Anforderung zu erfüllen, es sei denn, POOL_RAISE_IF_ALLOCATION_FAILURE angegeben ist. Andernfalls gibt die Routine einen Zeiger auf den zugeordneten Arbeitsspeicher zurück.

Hinweise

Um unter Windows-Versionen vor Windows 10 Version 2004 auszuführen, muss der Treiber vor dem Aufrufen dieser Funktion POOL_ZERO_DOWN_LEVEL_SUPPORT definieren und ExInitializeDriverRuntime aufrufen.

Weitere Anleitungen finden Sie im Abschnitt Hinweise von ExAllocatePoolWithTagPriority .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Erfordert WDK für Windows 10, Version 2004. Zielt auf Windows 7 und höhere Versionen des Windows-Betriebssystems ab.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln HwStorPortProhibitedDDIs, IrqlExAllocatePool, IrqlExFree2, SpNoWait, StorPortStartIo

Weitere Informationen

ExAllocatePoolWithTagPriority

ExAllocatePoolPriorityUninitialized