ExAllocatePoolQuotaZero-Funktion (wdm.h)
Achtung
Microsoft ist ein Problem mit ExAllocatePoolQuotaZero bekannt, 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 ExAllocatePoolWithQuotaTag.
ExAllocatePoolQuotaZero ordnet Poolspeicher des angegebenen Typs zu und gibt einen Zeiger auf den zugeordneten Block zurück. Er ist identisch mit ExAllocatePoolWithQuotaTag , aber null initialisiert den zugeordneten Arbeitsspeicher. Wenn dies nicht gewünscht ist, verwenden Sie stattdessen ExAllocatePoolQuotaUninitialized .
Syntax
PVOID ExAllocatePoolQuotaZero(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag
);
Parameter
PoolType
Der Typ des zuzuordnenden Poolarbeitsspeichers. Eine Beschreibung der verfügbaren Speichertypen des Pools finden Sie unter POOL_TYPE.
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, Tag1
die 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.
Rückgabewert
ExAllocatePoolQuotaZero gibt einen Zeiger auf den zugeordneten Pool zurück.
Wenn die Anforderung nicht erfüllt werden kann, löst ExAllocatePoolQuotaZero eine Ausnahme aus, es sei denn, POOL_QUOTA_FAIL_INSTEAD_OF_RAISE angegeben ist. Die Verwendung POOL_QUOTA_FAIL_INSTEAD_OF_RAISE wird aus Leistungsgründen bevorzugt.
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.
Diese Routine wird von Treibern der obersten Ebene aufgerufen, die Arbeitsspeicher zuweisen, um eine Anforderung im Kontext des Prozesses zu erfüllen, der ursprünglich die E/A-Anforderung gestellt hat. Treiber auf niedrigerer Ebene rufen stattdessen ExAllocatePoolZero auf.
Weitere Anleitungen finden Sie im Abschnitt Hinweise von ExAllocatePoolWithQuotaTag .
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 | HwStorPortProhibitedDIs, SpNoWait, StorPortStartIo |