KiStartSavingSupervisorState

INT64 __stdcall KiStartSavingSupervisorState(){
  _ETHREAD *CurrentThread; 
  unsigned int updated; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&KiSupervisorXStateFeaturesLock, 0i64);
  updated = KiUpdateSavedSupervisorState();
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&KiSupervisorXStateFeaturesLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&KiSupervisorXStateFeaturesLock);
  KeAbPostRelease(&KiSupervisorXStateFeaturesLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return updated;
}

Referenced by:

No references.