MiZeroPageThread
VOID __stdcall MiZeroPageThread(PVOID Context){
_DWORD *v2;
unsigned int v3;
_ETHREAD *CurrentThread;
unsigned int v5;
unsigned int v6;
unsigned int i;
INT64 v8;
if( Context != &MiSystemPartition || (int)MiZeroBootLargePages((INT64)Context) < 0 )
{
v2 = (_DWORD *)*((_QWORD *)Context + 805);
v3 = 0;
v2[67] = -1;
MiInitializeColorTable(v2 + 62, 0i64);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v8 = 0i64;
*((_DWORD *)CurrentThread + 325) |= 0x400u;
v5 = MiSetZeroPageThreadPriority((INT64)Context, (INT64)CurrentThread, 0i64);
while( 1 )
{
v6 = MiWaitForFreePagesToZero((INT64)Context, &v8, v3);
if( v6 == -1 )
break;
if( v3 != v6 )
{
v3 = v6;
MiInitializeColorTable(v2 + 62, v6);
}
for( i = 0; i <= 3; ++i )
{
if( (unsigned int)MiGetPagesToZero((INT64)Context, (UINT64)v2, i) )
break;
}
if( i <= 3 )
MiZeroPage((INT64)v2, (INT64)Context);
}
MiSetZeroPageThreadPriority((INT64)Context, (INT64)CurrentThread, v5);
*((_DWORD *)CurrentThread + 325) &= ~0x400u;
MiDeleteZeroThreadContext(v2);
*((_QWORD *)Context + 805) = 0i64;
}
}Referenced by:
No references.