/* Get pointer to the usermode context, exception record and machine frame */
UserStack = (PKUSER_EXCEPTION_STACK)UserRsp;
+ /* Enable interrupts */
+ _enable();
+
/* Set up the user-stack */
_SEH2_TRY
{
// FIXME: handle stack overflow
/* Nothing we can do here */
+ _disable();
_SEH2_YIELD(return);
}
_SEH2_END;
/* Set RIP to the User-mode Dispatcher */
TrapFrame->Rip = (ULONG64)KeUserExceptionDispatcher;
+ _disable();
+
/* Exit to usermode */
KiServiceExit2(TrapFrame);
}
Teb = KeGetCurrentThread()->Teb;
if (!Teb) return;
+ /* Enable interrupts */
+ _enable();
+
_SEH2_TRY
{
/* Get a pointer to the loader data */
{
}
_SEH2_END;
+
+ _disable();
}
VOID