The SYSTEM_POOL_INFORMATION structure may be what a successful call to ZwQuerySystemInformation or NtQuerySystemInformation would produce in its output buffer when given the information classes SystemPagedPoolInformation (0x0E) and SystemNonPagedPoolInformation (0x0F). Instead, these information classes are not implemented in any known Windows version, at least not in retail builds.

Documentation Status

The SYSTEM_POOL_INFORMATION structure is not documented.

Microsoft does publish the practical equivalent of a C-language definition as type information in public symbol files, though not for the kernel, where the structure is prepared, nor even for low-level user-mode DLLs that interpret the structure, but for various higher-level user-mode DLLs such as URLMON.DLL and only then starting with version 6.2.

Two earlier disclosures of type information are known, though not in symbol files but in statically linked libraries: GDISRVL.LIB from the Device Driver Kit (DDK) for Windows NT 3.51; and SHELL32.LIB from the DDK for Windows NT 4.0.


The SYSTEM_POOL_INFORMATION is 0x1C or 0x28 bytes in 32-bit and 64-bit Windows, respectively.

Offset (x86) Offset (x64) Definition
0x00 0x00
ULONG_PTR TotalSize;
0x04 0x08
PVOID FirstEntry;
0x08 0x10
USHORT EntryOverhead;
0x0A 0x12
BOOLEAN PoolTagPresent;
0x0B 0x13
UCHAR Spare0;
0x0C 0x14
ULONG NumberOfEntries;
0x10 0x18

The SYSTEM_POOL_ENTRY structure is 0x0C or 0x10 bytes in 32-bit and 64-bit Windows, respectively. While it seems to be used nowhere else, it may as well be presented here:

Offset Definition
BOOLEAN Allocated;
UCHAR Spare0;
USHORT AllocatorBackTraceIndex;
union {
    UCHAR Tag [4];
    ULONG TagUlong;
    PVOID ProcessChargedQuota