A virtual device must not modify page tables directly. However, a virtual device can retrieve a copy of a page table to analyze. To do so, use the _CopyPageTable service. To retrieve high-level information about a range of pages, use the _PageQuery function.
Each committed page has a specific set of permissions, which determine whether the page can be written to and whether it is accessible in user mode (ring 3). To change the permissions for a range of pages, use the _PageModifyPermissions service.
Because zero is a valid address, you should use an address in the permanently invalid region of linear address space to denote an invalid pointer.
See also _CopyPageTable, _GetNulPageHandle, _PageModifyPermissions, _PageQuery