// wdm.h
typedef enum _POOL_TYPE {
NonPagedPool,
NonPagedPoolExecute = NonPagedPool,
PagedPool,
NonPagedPoolMustSucceed = NonPagedPool + 2,
DontUseThisType,
NonPagedPoolCacheAligned = NonPagedPool + 4,
PagedPoolCacheAligned,
NonPagedPoolCacheAlignedMustS = NonPagedPool + 6,
MaxPoolType,
NonPagedPoolBase = 0,
NonPagedPoolBaseMustSucceed = NonPagedPoolBase + 2,
NonPagedPoolBaseCacheAligned = NonPagedPoolBase + 4,
NonPagedPoolBaseCacheAlignedMustS = NonPagedPoolBase + 6,
NonPagedPoolSession = 32,
PagedPoolSession = NonPagedPoolSession + 1,
NonPagedPoolMustSucceedSession = PagedPoolSession + 1,
DontUseThisTypeSession = NonPagedPoolMustSucceedSession + 1,
NonPagedPoolCacheAlignedSession = DontUseThisTypeSession + 1,
PagedPoolCacheAlignedSession = NonPagedPoolCacheAlignedSession + 1,
NonPagedPoolCacheAlignedMustSSession = PagedPoolCacheAlignedSession + 1,
NonPagedPoolNx = 512,
NonPagedPoolNxCacheAligned = NonPagedPoolNx + 4,
NonPagedPoolSessionNx = NonPagedPoolNx + 32,
} POOL_TYPE;
View the official Windows Driver Kit DDI referenceNo description available.
The POOL_TYPE enumeration type specifies the type of system memory to allocate.
typedef enum _POOL_TYPE {
NonPagedPool,
NonPagedPoolExecute = NonPagedPool,
PagedPool,
NonPagedPoolMustSucceed = NonPagedPool + 2,
DontUseThisType,
NonPagedPoolCacheAligned = NonPagedPool + 4,
PagedPoolCacheAligned,
NonPagedPoolCacheAlignedMustS = NonPagedPool + 6,
MaxPoolType,
NonPagedPoolBase = 0,
NonPagedPoolBaseMustSucceed = NonPagedPoolBase + 2,
NonPagedPoolBaseCacheAligned = NonPagedPoolBase + 4,
NonPagedPoolBaseCacheAlignedMustS = NonPagedPoolBase + 6,
NonPagedPoolSession = 32,
PagedPoolSession = NonPagedPoolSession + 1,
NonPagedPoolMustSucceedSession = PagedPoolSession + 1,
DontUseThisTypeSession = NonPagedPoolMustSucceedSession + 1,
NonPagedPoolCacheAlignedSession = DontUseThisTypeSession + 1,
PagedPoolCacheAlignedSession = NonPagedPoolCacheAlignedSession + 1,
NonPagedPoolCacheAlignedMustSSession = PagedPoolCacheAlignedSession + 1,
NonPagedPoolNx = 512,
NonPagedPoolNxCacheAligned = NonPagedPoolNx + 4,
NonPagedPoolSessionNx = NonPagedPoolNx + 32,
} POOL_TYPE;
NonPagedPoolNonpaged pool, which is nonpageable system memory. Nonpaged pool can be accessed from any IRQL, but it is a scarce resource and drivers should allocate it only when necessary.
System memory allocated with the NonPagedPool pool type is executable. For more information, see the description of the NonPagedPoolExecute pool type.
Starting with Windows 8, drivers should allocate most or all of their nonpaged memory from the no-execute (NX) nonpaged pool instead of the executable nonpaged pool. For more information, see the description of the NonPagedPoolNx pool type.
NonPagedPoolExecuteStarting with Windows 8, NonPagedPoolExecute is an alternate name for the NonPagedPool value. This value indicates that the allocated memory is to be nonpaged and executable—that is, instruction execution is enabled in this memory. To port a driver from an earlier version of Windows, you should typically replace all or most instances of the NonPagedPool name in the driver source code with NonPagedPoolNx. Avoid replacing instances of the NonPagedPool name with NonPagedPoolExecute except in cases in which executable memory is explicitly required. For more information, see No-Execute (NX) Nonpaged Pool.
PagedPoolPaged pool, which is pageable system memory. Paged pool can only be allocated and accessed at IRQL < DISPATCH_LEVEL.
NonPagedPoolMustSucceedThis value is for internal use only, and is allowed only during system startup. Drivers must not specify this value at times other than system startup, because a "must succeed" request crashes the system if the requested memory size is unavailable.
DontUseThisTypeReserved for system use.
NonPagedPoolCacheAlignedNonpaged pool, aligned on processor cache boundaries. This value is for internal use only.
PagedPoolCacheAlignedPaged pool, aligned on processor cache boundaries. This value is for internal use only.
NonPagedPoolCacheAlignedMustSThis value is for internal use only, and is allowed only during system startup. It is the cache-aligned equivalent of NonPagedPoolMustSucceed.
MaxPoolTypeReserved for system use.
NonPagedPoolBaseReserved for system use.
NonPagedPoolBaseMustSucceedReserved for system use.
NonPagedPoolBaseCacheAlignedReserved for system use.
NonPagedPoolBaseCacheAlignedMustSReserved for system use.
NonPagedPoolSessionDeprecated. Do not use.
PagedPoolSessionDeprecated. Do not use.
NonPagedPoolMustSucceedSessionDeprecated. Do not use.
DontUseThisTypeSessionDeprecated. Do not use.
NonPagedPoolCacheAlignedSessionDeprecated. Do not use.
PagedPoolCacheAlignedSessionDeprecated. Do not use.
NonPagedPoolCacheAlignedMustSSessionDeprecated. Do not use.
NonPagedPoolNxNo-execute (NX) nonpaged pool. This pool type is available starting with Windows 8. In contrast to the nonpaged pool designated by NonPagedPool, which allocates executable memory, the NX nonpaged pool allocates memory in which instruction execution is disabled. For more information, see No-Execute (NX) Nonpaged Pool.
Nonpaged pool can be accessed from any IRQL, but it is a scarce resource and drivers should allocate it only when necessary.
NonPagedPoolNxCacheAlignedNX nonpaged pool, aligned on processor cache boundaries. This value is reserved for exclusive use by the operating system.
NonPagedPoolSessionNxReserved for exclusive use by the operating system.
ExInitializeNPagedLookasideList
ExInitializePagedLookasideList