MiInitializePartitionThreads
NTSTATUS __stdcall MiInitializePartitionThreads(VOID *StartContext){
VOID **v1;
int *v2;
unsigned int v4;
VOID *v5;
__int64 v6;
_QWORD *ZeroThreadContext;
NTSTATUS SystemThread;
__int64 v10;
int v11[4];
_QWORD v12[3];
v10 = 0i64;
v11[0] = 0;
v1 = (VOID **)v12;
v12[0] = MiZeroPageThread;
v2 = v11;
v11[1] = 1;
v12[1] = MiRebuildLargePagesThread;
v11[2] = 2;
v12[2] = MiPartitionWorkingSetManager;
v4 = 0;
v5 = *(VOID **)(*((_QWORD *)StartContext + 22) + 112i64);
while( 1 )
{
v6 = (unsigned int)*v2;
if( !(_DWORD)v6 )
{
ZeroThreadContext = MiCreateZeroThreadContext(0i64, 0);
*((_QWORD *)StartContext + 805) = ZeroThreadContext;
if( !ZeroThreadContext )
return -1073741670;
}
SystemThread = PsCreateSystemThreadEx((__int64)&v10, 0x1FFFFF, 0i64, v5, 0i64, *v1, (INT64)StartContext, 0i64, 0i64);
if( SystemThread < 0 )
break;
++v4;
++v2;
*((_QWORD *)StartContext + v6 + 16) = v10;
++v1;
if( v4 >= 3 )
return 0;
}
if( !(_DWORD)v6 )
{
MiDeleteZeroThreadContext(*((_MI_ZERO_THREAD_CONTEXT **)StartContext + 805));
*((_QWORD *)StartContext + 805) = 0i64;
}
return SystemThread;
}Referenced by:
No references.