MiInitializePartitionThreads
INT64 __stdcall MiInitializePartitionThreads(PVOID StartContext){
PKSTART_ROUTINE *v1;
int *v2;
unsigned int v4;
void *v5;
__int64 v6;
_QWORD *ZeroThreadContext;
NTSTATUS v8;
PVOID ThreadHandle;
int v11[4];
_QWORD v12[3];
ThreadHandle = 0i64;
v11[0] = 0;
v1 = (PKSTART_ROUTINE *)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, 0i64);
*((_QWORD *)StartContext + 805) = ZeroThreadContext;
if( !ZeroThreadContext )
return 3221225626i64;
}
v8 = PsCreateSystemThreadEx(&ThreadHandle, 0x1FFFFFui64, 0i64, v5, 0i64, *v1, StartContext, 0i64, 0i64);
if( v8 < 0 )
break;
++v4;
++v2;
*((_QWORD *)StartContext + v6 + 16) = ThreadHandle;
++v1;
if( v4 >= 3 )
return 0i64;
}
if( !(_DWORD)v6 )
{
MiDeleteZeroThreadContext(*((PVOID *)StartContext + 805));
*((_QWORD *)StartContext + 805) = 0i64;
}
return(unsigned int)v8;
}Referenced by:
No references.