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.h
definierten 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.h
definiert) 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 |