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