_CopyPageTable
include vmm.inc
VMMCall _CopyPageTable, <LinPgNum, nPages, <OFFSET32 PageBuf>, flags>
mov [Copied], eax ; nonzero if copied, zero otherwise
Copies one or more page-table entries to the specified buffer. Virtual devices, such as the virtual DMA device, use this service to analyze the mapping of linear to physical addresses. Uses EAX, ECX, EDX, and Flags.
- Returns a nonzero value in the EAX register if the copy is successful, zero otherwise. The return value is zero if at least one of the specified page table entries was in a region where the corresponding page directory entry is not present. If zero is returned, the contents of the output buffer are undefined.
- LinPgNum
- Number of the first page table entry to copy. This parameter must be in the range 0 through 0FFFFFh. Numbers in the range 0 through 10Fh specify pages in the 1 megabyte V86 address space of the current virtual machine. Page numbers for other virtual machines can be computed using the CB_High_Linear field in the control block of each virtual machine.
- nPages
- Number of page-table entries to copy.
- PageBuf
- Address of the buffer to receive the page-table entries. This buffer must be large enough to receive the specified number of entries. Each entry is 4 bytes.
- flags
- Operation flags. Must be zero.
This service copies the page table, so writing to the buffer does not affect the content of the actual page table. The system does not update the buffer when changes to the actual page table are made, so no guarantees are made about the length of time the information in the buffer remains accurate.