POOL_FLAGS
Valor con tipo ULONG64 que especifica el tipo de memoria del grupo junto con los atributos obligatorios y opcionales. Se pueden combinar varios valores de marca mediante 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
Marcas necesarias
El asignador de grupo debe reconocer y satisfacer las marcas necesarias. Si el asignador no reconoce la marca o no puede hacer que una asignación satisfaga todas las marcas necesarias, se produce un error en la asignación.
Nombre | Descripción |
---|---|
POOL_FLAG_USE_QUOTA | Esta marca se pasa por los controladores de nivel superior que asignan memoria para satisfacer una solicitud en el contexto del proceso que originalmente realizó la solicitud de E/S. Los controladores de nivel inferior no necesitan especificar esta marca. |
POOL_FLAG_UNINITIALIZED | Deje la asignación sin inicializar. El contenido de la asignación es indeterminante. El controlador debe ser extremadamente cuidadoso nunca para copiar la memoria no inicializada en destinos que no son de confianza (modo de usuario, a través de la red, etc.). |
POOL_FLAG_SESSION | Reservado para el sistema operativo. |
POOL_FLAG_CACHE_ALIGNED | La caché alinea la asignación del grupo. Advertencia: esta marca se trata como un mejor esfuerzo y no debe usarse si se requieren asignaciones alineadas en caché para la corrección del programa. |
POOL_FLAG_RESERVED1 | Reservado para uso interno. |
POOL_FLAG_RAISE_ON_FAILURE | Genere una excepción si no se puede satisfacer la asignación. |
POOL_FLAG_NON_PAGED | Realice la asignación en el grupo no paginado. |
POOL_FLAG_NON_PAGED_EXECUTE | Realice la asignación en el grupo de archivos ejecutables no paginados. |
POOL_FLAG_PAGED | Realice la asignación en el grupo paginado. Se trata de un archivo ejecutable en x86, que no es ejecutable en todas las demás plataformas. |
POOL_FLAG_RESERVED2 | Reservado para uso interno. |
POOL_FLAG_RESERVED3 | Reservado para uso interno. |
Marcas opcionales
El asignador de grupo satisface las marcas opcionales de forma oportunista. Si el asignador no reconoce una marca opcional, la omite. Si el asignador no puede satisfacer una marca opcional, puede o no tener éxito en función de la semántica de la marca específica.
Nombre | Descripción |
---|---|
POOL_FLAG_SPECIAL_POOL | Realice la asignación en el grupo especial (se usa para la depuración). Si no se puede usar el grupo especial, el asignador intentará usar el grupo normal. |
Requisitos
Encabezado: wdm.h (incluye Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)