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.