include vmm.inc
mov edi, ThreadHandle
mov esi, FaultNumber
mov eax, OFFSET32 EventProc
mov edx, UpperStackLimit
mov ebp, FrameClient_Regs
VMMCall Log_Fault_Call_Out
jnc not_handled
This is a callout service that the VMM calls when it is about to report a fault to the user. It is provided so that a supplemental VxD can hook this service and log faults that are reported. The supplemental VxD can also handle the fault notification itself and indicate to the VMM that it shouldn't duplicate the notification. Virtual deices should not call this service directly.
Before calling this service (that is, on entry to the hook procedure), the stack looks like this:
esp <undefined area between the current ESP and EBP-16>
ebp-16 -> saved gs
ebp-12 -> saved fs
ebp-8 -> saved es
ebp-4 -> saved ds
ebp -> pushad frame
-> error code
-> faulting eip
-> faulting cs
-> flags
edx -> upper limit of stack used by event being processed
Notifications can not be suppressed if the fault was not caused by an event or timeout.
This service can modify any of the registers