POOL_FLAGS
Valeur de type ULONG64 spécifiant le type de mémoire du pool ainsi que les attributs obligatoires et facultatifs. Plusieurs valeurs d’indicateur peuvent être combinées à l’aide de or au niveau du bit.
//
// POOL_FLAG values
//
// Low 32-bits of ULONG64 are for required parameters (allocation fails if they
// cannot be satisfied).
// High 32-bits of ULONG64 is for optional parameters (allocation succeeds if
// they cannot be satisfied or are unrecognized).
//
#define POOL_FLAG_REQUIRED_START 0x0000000000000001UI64
#define POOL_FLAG_USE_QUOTA 0x0000000000000001UI64 // Charge quota
#define POOL_FLAG_UNINITIALIZED 0x0000000000000002UI64 // Don't zero-initialize allocation
#define POOL_FLAG_SESSION 0x0000000000000004UI64 // Use session specific pool
#define POOL_FLAG_CACHE_ALIGNED 0x0000000000000008UI64 // Cache aligned allocation
#define POOL_FLAG_RESERVED1 0x0000000000000010UI64 // Reserved for system use
#define POOL_FLAG_RAISE_ON_FAILURE 0x0000000000000020UI64 // Raise exception on failure
#define POOL_FLAG_NON_PAGED 0x0000000000000040UI64 // Non paged pool NX
#define POOL_FLAG_NON_PAGED_EXECUTE 0x0000000000000080UI64 // Non paged pool executable
#define POOL_FLAG_PAGED 0x0000000000000100UI64 // Paged pool
#define POOL_FLAG_RESERVED2 0x0000000000000200UI64 // Reserved for system use
#define POOL_FLAG_RESERVED3 0x0000000000000400UI64 // Reserved for system use
#define POOL_FLAG_REQUIRED_END 0x0000000080000000UI64
#define POOL_FLAG_OPTIONAL_START 0x0000000100000000UI64
#define POOL_FLAG_SPECIAL_POOL 0x0000000100000000UI64 // Make special pool allocation
#define POOL_FLAG_OPTIONAL_END 0x8000000000000000UI64
Indicateurs requis
Les indicateurs requis doivent être reconnus et satisfaits par l’allocateur de pool. Si l’allocateur ne reconnaît pas l’indicateur ou ne peut pas effectuer une allocation satisfaisant tous les indicateurs requis, l’allocation échoue.
Nom | Description |
---|---|
POOL_FLAG_USE_QUOTA | Cet indicateur est passé par les pilotes de niveau supérieur qui allouent de la mémoire pour répondre à une demande dans le contexte du processus qui a initialement effectué la demande d’E/S. Les pilotes de niveau inférieur n’ont pas besoin de spécifier cet indicateur. |
POOL_FLAG_UNINITIALIZED | Laissez l’allocation non initialisée. Le contenu de l’allocation est indéterminant. Le pilote doit être extrêmement prudent pour ne jamais copier la mémoire non initialisée vers des destinations non approuvées (mode utilisateur, sur le réseau, etc.). |
POOL_FLAG_SESSION | Réservé au système d’exploitation. |
POOL_FLAG_CACHE_ALIGNED | Mettre en cache l’allocation du pool. Avertissement : cet indicateur est traité comme un effort optimal et ne doit pas être utilisé si des allocations alignées sur le cache sont requises pour l’exactitude du programme. |
POOL_FLAG_RESERVED1 | Réservé à un usage interne. |
POOL_FLAG_RAISE_ON_FAILURE | Déclenchez une exception si l’allocation ne peut pas être satisfaite. |
POOL_FLAG_NON_PAGED | Effectuez l’allocation dans le pool non paginé. |
POOL_FLAG_NON_PAGED_EXECUTE | Effectuez l’allocation dans le pool exécutable non paginé. |
POOL_FLAG_PAGED | Effectuez l’allocation dans le pool paginé. Ce fichier est exécutable sur x86, non exécutable sur toutes les autres plateformes. |
POOL_FLAG_RESERVED2 | Réservé à un usage interne. |
POOL_FLAG_RESERVED3 | Réservé à un usage interne. |
Indicateurs facultatifs
Les indicateurs facultatifs sont satisfaits par l’allocateur de pool de manière opportuniste. Si l’allocateur ne reconnaît pas d’indicateur facultatif, il l’ignore. Si l’allocateur ne peut pas satisfaire un indicateur facultatif, il peut ou non réussir en fonction de la sémantique de l’indicateur spécifique.
Nom | Description |
---|---|
POOL_FLAG_SPECIAL_POOL | Effectuez l’allocation dans le pool spécial (utilisé pour le débogage). Si le pool spécial ne peut pas être utilisé, l’allocateur tente d’utiliser le pool normal. |
Spécifications
En-tête : wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)