include vmm.inc VMMcall _CopyPageTable, <LinPgNum, nPages, <OFFSET32 PageBuf>, flags> mov [Copied], eax ; nonzero if copied, zero otherwise |
The _CopyPageTable service 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.
LinPgNum
Specifies the 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
Specifies the number of page-table entries to copy.
PageBuf
Points to 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
Specifies the operation flags. This parameter must be set to 0.
The EAX register contains a nonzero value if the copy is successful. Otherwise, it contains zero indicating that at least one of the specified page table entries was in a region where the corresponding page directory entry is not present.
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.
EAX