_PageCommitPhys


#include <vmm.h>

ULONG EXTERNAL _PageCommitPhys(ULONG page, ULONG npages, ULONG physpg,
    ULONG flags);

Commits a specified physical page or range of physical pages to a range of linear addresses.

page and npages

Linear page number to commit the first physical page to, and the number of pages to commit. The entire range of linear addresses must have been reserved by a single call to the _PageReserve service, and none of the linear pages can be already committed.

physpg

Physical page number of the first page to commit. All of the physical pages committed must be either outside the control of the memory manager (for example, a memory-mapped device or video memory) or otherwise under the control of the virtual device driver making the call (for example, previously allocated and locked, or obtained by a previous call to PageCommitContig with the PCC_NOLIN flag). By default, all pages in the linear address region are mapped to the page number specified by physpg. To commit a region of physical pages to a corresponding region of linear addrsses, use the PC_INCR flag.

flags

One or more of these values:

PC_INCR

The linear pages are mapped to an equal number of contiguous physical pages. That is, the physical page number is incremented for each linear page committed.

this flag is not specified, all of the linear pages are mapped to the same physical page.

PC_USER

The pages are accessible at ring 3.

PC_WRITEABLE

The pages are writeable.


Memory committed through this service should not be touched while processing a hardware interrupt, since the page tables mapping the memory may be swapped out. If you need to access the memory at hardware interrupt time, lock the pages with the _LinPageLock service.