Freigeben über


ExAllocatePoolQuotaZero-Funktion (wdm.h)

Vorsicht

Microsoft ist sich eines Problems mit ExAllocatePoolQuotaZero 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 der neuesten WDK finden Sie unter Herunterladen des Windows Driver Kit (WDK).

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

ExAllocatePoolQuotaZero weist poolspeicher des angegebenen Typs zu und gibt einen Zeiger auf den zugewiesenen Block zurück. Es ist identisch mit ExAllocatePoolWithQuotaTag- außer null initialisiert den zugeordneten Speicher. 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 zuzuweisenden Poolspeichers. Eine Beschreibung der verfügbaren Poolspeichertypen finden Sie unter POOL_TYPE.

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.

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 von POOL_QUOTA_FAIL_INSTEAD_OF_RAISE wird aus Leistungsgründen bevorzugt.

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.

Diese Routine wird von Treibern der höchsten Ebene aufgerufen, die Arbeitsspeicher zuweisen, um eine Anforderung im Kontext des Prozesses zu erfüllen, der ursprünglich die E/A-Anforderung vorgenommen hat. Treiber auf niedrigerer Ebene rufen stattdessen ExAllocatePoolZero auf.

Weitere Anleitungen finden Sie im Abschnitt "Hinweise" von "ExAllocatePoolWithQuotaTag"-.

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, SpNoWait, StorPortStartIo

Siehe auch

ExAllocatePoolQuotaUninitialized