IPF_Data


include vmm.inc

IPF_Data    struc
IPF_LinAddr     dd  ?   ; CR2 address of fault
IPF_MapPageNum  dd  ?   ; possible converted page number of fault
IPF_PTEEntry    dd  ?   ; contents of PTE that faulted
IPF_FaultingVM  dd  ?   ; may not = current VM (IPF_V86PgH set)
IPF_Flags       dd  ?   ; flags
IPF_Data    ends

The IPF_Data structure contains information about the current invalid page fault.

IPF_LinAddr

Specifies the CR2 address of the page fault. Do not read from the CR2 register directly; use this value instead.

IPF_MapPageNum

Specifies the possible converted page number of the fault.

IPF_PTEEntry

Specifies the contents of the page-table entry that caused the fault.

IPF_FaultingVM

Specifies the handle identifying the virtual machine that caused the fault. This is not necessarily the current virtual machine.

IPF_Flags

Specifies the invalid page-fault flags. It can be a combination of the following values:

Value

Meaning

IPF_InvTyp

Page has invalid not-present type.

IPF_PgDir

Page directory entry not present (not-present page table).

IPF_PgErr

Page swap device could not page for some reason.

IPF_PM

Page fault caused by virtual machine running in protected mode.

IPF_ReFlt

Re-entrant page fault.

IPF_V86

Page fault caused by virtual machine running in V86 mode.

IPF_V86Pg

Unexpected not-present page in V86.

IPF_V86PgH

Unexpected not-present page in V86 at high linear address.

IPF_VMM

Page fault caused by a virtual device.


Invalid page faults occur in a virtual machine other than the current virtual machine if the high linear address of the virtual machine is accessed. In this case, the IPF_FaultingVM field is set to the handle of the virtual machine that owns the high linear address.

See also Hook_Invalid_Page_Fault