KeSwapProcessOrStack

VOID __stdcall __noreturn KeSwapProcessOrStack(VOID *Context){
  _SINGLE_LIST_ENTRY *v1; 
  _SINGLE_LIST_ENTRY *v2; 
  _SINGLE_LIST_ENTRY *v3; 

  KeSetPriorityThread(KeGetCurrentThread(), 23);
  while( 1 )
  {
    KeWaitForSingleObject((UINT64)&KiSwapEvent, 0, 0, 0, 0i64);
    if( _InterlockedCompareExchange((_DWORD *)&stru_140CF2E80 + 1252, 0, 1) == 1 )
      KiOutSwapKernelStacks();
    v1 = (_SINGLE_LIST_ENTRY *)_InterlockedExchange64(&KiProcessOutSwapListHead, 0i64);
    if( v1 )
      KiOutSwapProcesses(v1);
    v2 = (_SINGLE_LIST_ENTRY *)_InterlockedExchange64((_QWORD *)&KiSwapEvent + 3, 0i64);
    if( v2 )
      KiInSwapProcesses(v2);
    v3 = (_SINGLE_LIST_ENTRY *)_InterlockedExchange64(&KiStackInSwapListHead, 0i64);
    if( v3 )
      KiInSwapKernelStacks(v3);
  }
}

Referenced by:

No references.