POOL_FLAGS
Valore tipizzato ULONG64 che specifica il tipo di memoria del pool insieme agli attributi obbligatori e facoltativi. È possibile combinare più valori di flag usando OR bit-wise.
//
// 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
Flag obbligatori
I flag obbligatori devono essere riconosciuti e soddisfatti dall'allocatore del pool. Se l'allocatore non riconosce il flag o non può rendere un'allocazione soddisfacente per tutti i flag necessari, l'allocazione ha esito negativo.
Nome | Descrizione |
---|---|
POOL_FLAG_USE_QUOTA | Questo flag viene passato dai driver di livello più alto che allocano memoria per soddisfare una richiesta nel contesto del processo che ha originariamente effettuato la richiesta di I/O. I driver di livello inferiore non devono specificare questo flag. |
POOL_FLAG_UNINITIALIZED | Lasciare l'allocazione non inizializzata. Il contenuto dell'allocazione è indeterminato. Il driver deve prestare molta attenzione a non copiare mai la memoria non inizializzata in destinazioni non attendibili (modalità utente, rete e così via). |
POOL_FLAG_SESSION | Riservato per il sistema operativo. |
POOL_FLAG_CACHE_ALIGNED | Allineare la cache all'allocazione del pool. Avviso: questo flag viene considerato come un'operazione ottimale e non deve essere usato se sono necessarie allocazioni allineate alla cache per la correttezza del programma. |
POOL_FLAG_RESERVED1 | Riservato per utilizzo interno. |
POOL_FLAG_RAISE_ON_FAILURE | Generare un'eccezione se l'allocazione non può essere soddisfatta. |
POOL_FLAG_NON_PAGED | Effettuare l'allocazione nel pool non di paging. |
POOL_FLAG_NON_PAGED_EXECUTE | Eseguire l'allocazione nel pool di eseguibili non di paging. |
POOL_FLAG_PAGED | Effettuare l'allocazione nel pool di paging. Questo file è eseguibile in x86, non eseguibile in tutte le altre piattaforme. |
POOL_FLAG_RESERVED2 | Riservato per utilizzo interno. |
POOL_FLAG_RESERVED3 | Riservato per utilizzo interno. |
Flag facoltativi
I flag facoltativi vengono soddisfatti dall'allocatore pool in modo opportunistico. Se l'allocatore non riconosce un flag facoltativo, lo ignora. Se l'allocatore non può soddisfare un flag facoltativo, può avere esito positivo o negativo a seconda della semantica del flag specifico.
Nome | Descrizione |
---|---|
POOL_FLAG_SPECIAL_POOL | Effettuare l'allocazione nel pool speciale (usato per il debug). Se non è possibile usare il pool speciale, l'allocatore tenterà di usare il pool normale. |
Requisiti
Intestazione: wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)