Freigeben über


ExAllocatePoolPriorityZero-Funktion (wdm.h)

Vorsicht

Microsoft ist sich eines Problems mit ExAllocatePoolPriorityZero bewusst, das zu einer Zuordnung führen kann, die nicht auf Windows 10, Version 1909, angewendet 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 der neuesten WDK finden Sie unter Herunterladen des Windows Driver Kit (WDK).

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

ExAllocatePoolPriorityZero weist poolspeicher des angegebenen Typs zu.

Es ist identisch mit ExAllocatePoolWithTagPriority- außer null initialisiert den zugewiesenen Speicher. 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 zuzuweisenden Poolspeichers. Eine Beschreibung der verfügbaren Poolspeichertypen finden Sie unter POOL_TYPE.

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

Ebenso können Sie den PoolType- Wert durch Bitweise-ORing diesen Wert mit dem POOL_COLD_ALLOCATION Flag (auch in wdm.hdefiniert) als Hinweis auf 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 POOL_COLD_ALLOCATION Flag ist nur eine Empfehlung.

NumberOfBytes

Die Anzahl der zuzuordnenden Bytes.

Tag

Das Pooltag, das für den zugewiesenen Speicher verwendet werden soll. Geben Sie das Pooltag als Nicht-Null-Zeichenliteral von 1 bis vier Zeichen an, die durch einfache Anführungszeichen (z. B. Tag1) getrennt sind. 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 0x7E. Jeder Zuordnungscodepfad sollte ein eindeutiges Pooltag verwenden, um Debuggern und Prüfern bei der Identifizierung 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 ist angegeben. Andernfalls gibt die Routine einen Zeiger auf den zugewiesenen Speicher zurück.

Bemerkungen

Um vor Windows 10, Version 2004, auf Versionen von Windows auszuführen, muss der Treiber POOL_ZERO_DOWN_LEVEL_SUPPORT definieren und ExInitializeDriverRuntime aufrufen, bevor diese Funktion aufgerufen wird.

Weitere Anleitungen finden Sie im Abschnitt "Hinweise" von ExAllocatePoolWithTagPriority.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Erfordert WDK für Windows 10, Version 2004. Zielt auf Windows 7 und höhere Versionen des Windows-Betriebssystems ab.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln HwStorPortProhibitedDIs, IrqlExAllocatePool, IrqlExFree2, SpNoWait, StorPortStartIo

Siehe auch

ExAllocatePoolWithTagPriority

ExAllocatePoolPriorityUninitialized