ExAllocatePoolQuotaUninitialized-Funktion (wdm.h)
Die ExAllocatePoolQuotaUninitialized Routine weist Poolspeicher zu, wobei das Kontingent für den aktuellen Prozess geladen wird.
Diese Routine ist eine Wrapper- und Ersetzungsoption für ExAllocatePoolWithQuotaTag. Es gibt keinen Unterschied in der Funktionalität.
Syntax
PVOID ExAllocatePoolQuotaUninitialized(
__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.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 empfehlungsspezifisch.
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
ExAllocatePoolQuotaUninitialized gibt einen Zeiger auf den zugeordneten Pool zurück.
Wenn die Anforderung nicht erfüllt werden kann, löst ExAllocatePoolQuotaUninitialized eine Ausnahme aus, es sei denn, POOL_QUOTA_FAIL_INSTEAD_OF_RAISE ist angegeben. Die Verwendung von POOL_QUOTA_FAIL_INSTEAD_OF_RAISE wird aus Leistungsgründen bevorzugt.
Bemerkungen
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 ExAllocatePoolUninitialized auf.
Speicher, der ExAllocatePoolQuotaUninitialized zugewiesen wird, ist nicht initialisiert. Ein Kernelmodustreiber muss zuerst diesen Speicher null sein, wenn er für Software im Benutzermodus sichtbar wird (um zu vermeiden, dass potenziell privilegierte Inhalte verloren gehen)
Weitere Anleitungen finden Sie im Abschnitt HinweiseExAllocatePoolWithQuotaTag.
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- | IRQL-<= DISPATCH_LEVEL (siehe Abschnitt "Hinweise") |
DDI-Complianceregeln | HwStorPortProhibitedDIs, SpNoWait, StorPortStartIo |