ExAllocatePoolPriorityZero, fonction (wdm.h)
Prudence
Microsoft est conscient d’un problème avec ExAllocatePoolPriorityZero qui peut entraîner la mise à zéro d’une allocation sur Windows 10, version 1909. Ce problème a été résolu dans une actualisation de sécurité de WDK pour Windows 10, version 2004 et enterprise WDK (EWDK) pour Windows 10, version 2004 le 16 décembre 2020. Pour plus d’informations sur le téléchargement de la dernière version de WDK, consultez Télécharger le kit de pilotes Windows (WDK).
Cette routine est un wrapper pour et une option de remplacement recommandée pour ExAllocatePoolWithTagPriority.
ExAllocatePoolPriorityZero alloue la mémoire du pool du type spécifié.
Il est identique à ExAllocatePoolWithTagPriority sauf qu’il n’initialise pas la mémoire allouée. Si ce n’est pas souhaité, utilisez ExAllocatePoolPriorityUninitialized à la place.
Syntaxe
PVOID ExAllocatePoolPriorityZero(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag,
EX_POOL_PRIORITY Priority
);
Paramètres
PoolType
Type de mémoire du pool à allouer. Pour obtenir une description des types de mémoire de pool disponibles, consultez POOL_TYPE.
Vous pouvez modifier la valeur d’énumération en effectuant un bit-OR avec l’indicateur de POOL_RAISE_IF_ALLOCATION_FAILURE défini dans wdm.h
. Cet indicateur déclenche une exception si la demande ne peut pas être satisfaite. L’utilisation de cet indicateur n’est pas recommandée, car il est coûteux.
De même, vous pouvez modifier la valeur PoolType par bitwise-ORing cette valeur avec l’indicateur de POOL_COLD_ALLOCATION (également défini dans wdm.h
) comme indicateur au noyau pour allouer la mémoire à partir de pages susceptibles d’être paginées rapidement. Pour réduire autant que possible la quantité de mémoire du pool résident, vous ne devez pas référencer ces allocations fréquemment. L’indicateur POOL_COLD_ALLOCATION n’est qu’un avis.
NumberOfBytes
Nombre d’octets à allouer.
Tag
Balise de pool à utiliser pour la mémoire allouée. Spécifiez la balise de pool en tant que littéral de caractère différent de zéro d’un à quatre caractères délimités par des guillemets simples (par exemple, Tag1
). La chaîne est généralement spécifiée dans l’ordre inverse (par exemple, 1gaT
). Chaque caractère ASCII de la balise doit être une valeur dans la plage 0x20 (espace) à 0x7E (tilde). Chaque chemin de code d’allocation doit utiliser une balise de pool unique pour aider les débogueurs et les vérificateurs à identifier le chemin du code.
Priority
Valeur d’énumération EX_POOL_PRIORITY spécifiant la priorité de cette requête.
Valeur de retour
ExAllocatePoolPriorityZero retourne NULL s’il n’y a pas de mémoire dans le pool libre pour satisfaire la demande, sauf si POOL_RAISE_IF_ALLOCATION_FAILURE est spécifié. Sinon, la routine retourne un pointeur vers la mémoire allouée.
Remarques
Pour s’exécuter sur des versions de Windows antérieures à Windows 10 version 2004, le pilote doit définir POOL_ZERO_DOWN_LEVEL_SUPPORT et appeler ExInitializeDriverRuntime avant d’appeler cette fonction.
Consultez la section Remarques de ExAllocatePoolWithTagPriority pour obtenir des conseils supplémentaires.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Nécessite WDK pour Windows 10, version 2004. Cible Windows 7 et versions ultérieures du système d’exploitation Windows. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (voir la section Remarques) |
règles de conformité DDI | HwStorPortProhibitedDDIs, IrqlExAllocatePool, IrqlExFree2, SpNoWait, StorPortStartIo |