IopCreatePassiveInterruptRealtimeThreads
NTSTATUS __stdcall IopCreatePassiveInterruptRealtimeThreads(){
void *v0;
int v1;
NTSTATUS result;
NTSTATUS v3;
__int128 v4;
__int64 v5;
int v6;
int v7;
__int128 v8;
PVOID Object;
VOID *Handle;
Object = v0;
v1 = 0;
v7 = 0;
Handle = 0i64;
v5 = 0i64;
v4 = 0x30ui64;
v6 = 512;
v8 = 0i64;
if( !PassiveInterruptRealtimeWorkerCount )
return 0;
while( 1 )
{
result = PsCreateSystemThreadEx(
(__int64)&Handle,
0x1FFFFF,
&v4,
0i64,
0i64,
IopPassiveInterruptRealtimeWorker,
(INT64)&Queue,
0i64,
0i64);
if( result < 0 )
break;
Object = 0i64;
v3 = ObReferenceObjectByHandle(Handle, 0x1FFFFFui64, (_OBJECT_TYPE *)PsThreadType, 0, &Object, 0i64);
ZwClose((_HANDLE)Handle);
if( v3 >= 0 )
{
KeSetActualBasePriorityThread((_KTHREAD *)Object, (unsigned __int8)PassiveInterruptRealtimeWorkerPriority);
HalPutDmaAdapter((PADAPTER_OBJECT)Object);
}
if( ++v1 >= (unsigned int)(unsigned __int8)PassiveInterruptRealtimeWorkerCount )
return 0;
}
return result;
}Referenced by:
IopInitializePassiveInterruptServices