_CopyPageTable

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.

Parameters

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.

Return Value

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.

Comments

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.

Uses

EAX