NtWorkerFactoryWorkerReady
NTSTATUS __stdcall NtWorkerFactoryWorkerReady(VOID *WorkerFactoryHandle){
int v1;
_DWORD *v2;
int v3;
int v4;
_KLOCK_QUEUE_HANDLE LockHandle;
PVOID Object;
memset(&LockHandle, 0, sizeof(LockHandle));
Object = 0i64;
v1 = ObReferenceObjectByHandle(
WorkerFactoryHandle,
0x10ui64,
ExpWorkerFactoryObjectType,
KeGetCurrentThread()->PreviousMode,
&Object,
0i64);
if( v1 >= 0 )
{
v2 = Object;
KeAcquireInStackQueuedSpinLock(*((PKSPIN_LOCK *)Object + 2), &LockHandle);
v3 = v2[76];
if( v3 )
{
v2[76] = v3 - 1;
v4 = v2[74];
if( v4 )
{
++v2[72];
++v2[73];
v2[74] = v4 - 1;
}
else
{
v1 = -1073741558;
}
}
else
{
v1 = -1073741823;
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
ObfDereferenceObjectWithTag(v2, 0x746C6644ui64);
}
return v1;
}Referenced by:
No references.