KiSaveProcessorState
VOID __stdcall KiSaveProcessorState(_KTRAP_FRAME *TrapFrame, _KTRAP_FRAME *ExceptionFrame){
struct _KPRCB *CurrentPrcb;
_CONTEXT *Context;
INT64 ContextFlagsInit;
CurrentPrcb = KeGetCurrentPrcb();
Context = CurrentPrcb->Context;
ContextFlagsInit = CurrentPrcb->ContextFlagsInit;
Context->ContextFlags = ContextFlagsInit;
if( (TrapFrame->SegCs & 1) == 0
&& ((ContextFlagsInit & 0x100040) == 1048640 || (ContextFlagsInit & 0x100008) == 1048584) )
{
KiSaveNpxState((INT64)Context, ContextFlagsInit);
}
KeContextFromKframes(TrapFrame, ExceptionFrame, Context);
KiSaveProcessorControlState(&CurrentPrcb->ProcessorState);
}Referenced by:
KiFreezeTargetExecution
KxNmiInterrupt