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)