Partilhar via


POOL_FLAGS

Um valor do tipo ULONG64 que especifica o tipo de memória do pool junto com atributos obrigatórios e opcionais. Vários valores de sinalizador podem ser combinados usando OR bit a 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

Sinalizadores necessários

Os sinalizadores necessários devem ser reconhecidos e atendidos pelo alocador do pool. Se o alocador não reconhecer o sinalizador ou não puder fazer com que uma alocação satisfaza todos os sinalizadores necessários, a alocação falhará.

Nome Descrição
POOL_FLAG_USE_QUOTA Esse sinalizador é passado por drivers de nível mais alto que alocam memória para atender a uma solicitação no contexto do processo que originalmente fez a solicitação de E/S. Drivers de nível inferior não precisam especificar esse sinalizador.
POOL_FLAG_UNINITIALIZED Deixe a alocação não inicializada. O conteúdo da alocação é indeterminado. O driver deve ser extremamente cuidadoso para nunca copiar memória não inicializada para destinos não confiáveis (modo de usuário, pela rede etc.).
POOL_FLAG_SESSION Reservado para o sistema operacional.
POOL_FLAG_CACHE_ALIGNED O cache alinha a alocação do pool. Aviso: esse sinalizador é tratado como um melhor esforço e não deve ser usado se as alocações alinhadas ao cache forem necessárias para a correção do programa.
POOL_FLAG_RESERVED1 Reservado para uso interno.
POOL_FLAG_RAISE_ON_FAILURE Gere uma exceção se a alocação não puder ser atendida.
POOL_FLAG_NON_PAGED Faça a alocação no pool não paginado.
POOL_FLAG_NON_PAGED_EXECUTE Faça a alocação no pool executável não paginado.
POOL_FLAG_PAGED Faça a alocação no pool de páginas. Isso é executável no x86, não executável em todas as outras plataformas.
POOL_FLAG_RESERVED2 Reservado para uso interno.
POOL_FLAG_RESERVED3 Reservado para uso interno.

Sinalizadores opcionais

Os sinalizadores opcionais são atendidos pelo alocador do pool de forma oportunista. Se o alocador não reconhecer um sinalizador opcional, ele o ignorará. Se o alocador não puder atender a um sinalizador opcional, ele poderá ou não ter êxito dependendo da semântica do sinalizador específico.

Nome Descrição
POOL_FLAG_SPECIAL_POOL Faça a alocação no pool especial (usado para depuração). Se o pool especial não puder ser usado, o alocador tentará usar o pool normal.

Requisitos

Cabeçalho: wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

Consulte Também

ExAllocatePool2