_PageReserve


#include <vmm.h>

ULONG EXTERNAL _PageReserve(ULONG page, ULONG npages, ULONG flags);

Reserves a range of linear addresses in the current context without allocating any physical storage.

page

Linear page number of the start of the range, or one of these values:

PR_PRIVATE

Anywhere in current ring 3 private arena.

PR_SHARED

Anywhere in the ring 3 shared arena.

PR_SYSTEM

Anywhere in the system arena.


If an explicit page is specified, the memory manager attempts to allocate that linear page address. If the linear address is already in use, the service fails.

npages

Number of linear pages to reserve.

flags

Zero or more of these values:

PR_FIXED

Prevents _PageReAllocate from moving the pages.

PR_STATIC

Disallows commit, decommit and free operations unless a static flag is specified.

PR_4MEG

Forces the reserved address to be aligned on a four-megabyte boundary. This flag is ignored if the page parameter specifies a specific address.


Before touching any linear page reserved by this service, you must commit physical storage to the page using the _PageCommit, _PageCommitContig, or _PageCommitPhys service.

See also _PageCommit, _PageCommitContig, _PageCommitPhys