49 ULONG EFlags, OldEFlags;
53 ASSERT(TrapFrame->DbgArgMark == 0xBADB0D00);
59 OutContext->SegGs = TrapFrame->V86Gs;
60 OutContext->SegFs = TrapFrame->V86Fs;
61 OutContext->SegEs = TrapFrame->V86Es;
62 OutContext->SegDs = TrapFrame->V86Ds;
67 OutContext->SegGs = TrapFrame->SegGs;
68 OutContext->SegFs = TrapFrame->SegFs;
69 OutContext->SegEs = TrapFrame->SegEs;
70 OutContext->SegDs = TrapFrame->SegDs;
74 OutContext->SegCs = TrapFrame->SegCs;
75 OutContext->SegSs = TrapFrame->HardwareSegSs;
78 OutContext->Eax = TrapFrame->Eax;
79 OutContext->Ebx = TrapFrame->Ebx;
80 OutContext->Ecx = TrapFrame->Ecx;
81 OutContext->Edx = TrapFrame->Edx;
82 OutContext->Esi = TrapFrame->Esi;
83 OutContext->Edi = TrapFrame->Edi;
86 OutContext->Ebp = TrapFrame->Ebp;
87 OutContext->Esp = TrapFrame->HardwareEsp;
88 OutContext->Eip = TrapFrame->Eip;
91 OutContext->EFlags = TrapFrame->EFlags;
94 TrapFrame->SegCs = InContext->SegCs;
95 TrapFrame->HardwareSegSs = InContext->SegSs;
98 TrapFrame->Eax = InContext->Eax;
99 TrapFrame->Ebx = InContext->Ebx;
100 TrapFrame->Ecx = InContext->Ecx;
101 TrapFrame->Edx = InContext->Edx;
102 TrapFrame->Esi = InContext->Esi;
103 TrapFrame->Edi = InContext->Edi;
106 TrapFrame->Ebp = InContext->Ebp;
107 TrapFrame->HardwareEsp = InContext->Esp;
108 TrapFrame->Eip = InContext->Eip;
111 EFlags = InContext->EFlags;
122 TrapFrame->HardwareSegSs |=
RPL_MASK;
137 OldEFlags = TrapFrame->EFlags;
138 TrapFrame->EFlags = EFlags;
151 TrapFrame->V86Gs = InContext->SegGs;
152 TrapFrame->V86Fs = InContext->SegFs;
153 TrapFrame->V86Es = InContext->SegEs;
154 TrapFrame->V86Ds = InContext->SegDs;
159 TrapFrame->SegGs = InContext->SegGs;
160 TrapFrame->SegFs = InContext->SegFs;
161 TrapFrame->SegEs = InContext->SegEs;
162 TrapFrame->SegDs = InContext->SegDs;
248 return VdmFrame->
Eax;
271 Context = VdmTib->MonitorContext;
292 VdmTib->VdmContext.EFlags &= ~EFLAGS_INTERRUPT_MASK;
302 VdmTib->VdmContext.EFlags = (VdmTib->VdmContext.EFlags & ~EFLAGS_INTERRUPT_MASK) |
322 Eip = (
PUCHAR)((TrapFrame->Eip & 0xFFFF) +
323 ((TrapFrame->SegCs & 0xFFFF) << 4));
403 DPRINT1(
"VdmDispatchPageFault EFlags %lx exit with 0x%lx\n", TrapFrame->EFlags,
Status);
#define EFLAGS_INTERRUPT_MASK
#define NT_SUCCESS(StatCode)
#define PsGetCurrentThread()
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
#define KeGetCurrentIrql()
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define EXCEPTION_EXECUTE_HANDLER
#define EFLAGS_USER_SANITIZE
struct _FX_SAVE_AREA FX_SAVE_AREA
#define EXCEPTION_CHAIN_END
BOOLEAN KeI386VirtualIntExtensions
ULONG KeI386EFlagsAndMaskV86
ULONG KeI386EFlagsOrMaskV86
VOID NTAPI Ki386AdjustEsp0(IN PKTRAP_FRAME TrapFrame)
#define STATUS_INVALID_SYSTEM_SERVICE
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
BOOLEAN NTAPI VdmDispatchPageFault(_In_ PKTRAP_FRAME TrapFrame)
BOOLEAN NTAPI VdmDispatchBop(IN PKTRAP_FRAME TrapFrame)
VOID NTAPI VdmEndExecution(IN PKTRAP_FRAME TrapFrame, IN PVDM_TIB VdmTib)
NTSTATUS NTAPI VdmpGetVdmTib(OUT PVDM_TIB *VdmTib)
VOID NTAPI VdmSwapContext(IN PKTRAP_FRAME TrapFrame, IN PCONTEXT OutContext, IN PCONTEXT InContext)
NTSTATUS NTAPI VdmpStartExecution(VOID)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql