| Platform SDK: Performance Monitoring |
The QueryWorkingSet function retrieves information about the pages currently added to the working set of the specified process.
BOOL QueryWorkingSet( HANDLE hProcess, // handle to process PVOID pv, // information buffer DWORD cb // size of buffer );
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
The return buffer consists of a DWORD value and a variable number of DWORD_PTR values. The DWORD contains the number of valid DWORD_PTR values that follow it in the buffer. Each remaining DWORD_PTR represents one page in the process working set.
Each DWORD_PTR value is an address of a bit field containing information about a specific working set page. To decode these DWORD_PTR values, it is necessary to split the highest-order 52 bits from the lowest-order 12 bits.
The highest-order 52 bits (obtained by using a bitwise AND operator with 0xFFFFFFFFFFFFF000) contain the address of a page of memory loaded into the specified process.
The lowest-order 12 bits of this bit field contain the following 4 fields, from highest-order bit to lowest-order.
| Value | Meaning |
|---|---|
| 0 | The page is not accessed. |
| 1 | The page is read-only. |
| 2 | The page is executable. |
| 3 | The page is executable and read-only. |
| 4 | The page has read/write access. |
| 5 | The page is copy-on-write. |
| 6 | The page is executable and has read/write access. |
| 7 | The page is executable and has copy-on-write access. |
| 8 | The page is not accessed. |
| 9 | The page is not cached and has read-only access. |
| 10 | The page is not cached and is executable. |
| 11 | The page is not cached, is executable, and has read-only access. |
| 12 | The page is not cached and has read/write access. |
| 13 | The page is not cached and has copy-on-write access. |
| 14 | The page is not cached, is executable, and has read/write access. |
| 15 | The page is not cached, is executable, and has copy-on-write access. |
| 16 | The page is not accessed. |
| 17 | The page is a guard page and has read-only access. |
| 18 | The page is a guard page and is executable. |
| 19 | The page is a guard page, is executable, and has read-only access. |
| 20 | The page is a guard page and has read/write access. |
| 21 | The page is a guard page and has copy-on-write access. |
| 22 | The page is a guard page, is executable, and has read/write access. |
| 23 | The page is a guard page, is executable, and has copy-on-write access. |
| 24 | The page is not accessed. |
| 25 | The page is a non-cacheable guard page and has read-only access. |
| 26 | The page is a non-cacheable guard page and has executable access. |
| 27 | The page is a non-cacheable guard page, is executable, and has read-only access. |
| 28 | The page is a non-cacheable guard page and has read/write access. |
| 29 | The page is a non-cacheable guard page and has copy-on-write access. |
| 30 | The page is a non-cacheable guard page, is executable, and has read/write access. |
| 31 | The page is a non-cacheable guard page, is executable, and has copy-on-write access. |
Windows NT/2000: Requires Windows NT 4.0 or later.
Header: Declared in Psapi.h.
Library: Use Psapi.lib.
Process Status Helper Overview, PSAPI Functions, EnumProcesses