MiInitializeScrubPacket
__int64 __fastcall MiInitializeScrubPacket(__int64 a1){
unsigned int v2;
unsigned int NextPageColor;
__int64 v5;
__int64 v6;
__int128 v7;
v2 = 0;
v7 = 0i64;
MiInitializePageColorBase(*((_QWORD *)KeGetCurrentThread() + 23) + 1664i64, 0i64, (INT64)&v7);
NextPageColor = MiGetNextPageColor((INT64)&v7);
if( !(unsigned int)MiCreateUltraThreadContext(a1 + 48, NextPageColor, 8i64) )
return 3221225626i64;
MiCreatePteCopyList(0x100ui64, 0x100ui64, a1 + 176);
if( *(_DWORD *)(a1 + 180)
&& (v5 = *(_QWORD *)a1,
*(_QWORD *)(a1 + 200) = 0i64,
*(_QWORD *)(a1 + 216) = 0i64,
*(_QWORD *)(a1 + 208) = 0i64,
LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x40),
(*(_QWORD *)(a1 + 200) = v6) != 0i64) )
{
if( *(_DWORD *)(a1 + 8) != -1 )
*(_QWORD *)(a1 + 216) = MiReferencePageRuns(*(_MI_PARTITION **)(v5 + 48), 1ui64);
}
else
{
MiReleaseScrubPacket(a1);
return(unsigned int)-1073741670;
}
return v2;
}Referenced by:
MiScrubMemoryWorker
MiScrubProcesses