PspQueueDeferredWorkAndWait
NTSTATUS __stdcall PspQueueDeferredWorkAndWait(VOID *Parameter){
VOID *v1;
__int64 v2;
_WORK_QUEUE_ITEM WorkItem;
__int64 Object;
__int128 v6;
NTSTATUS(__stdcall *v7)(VOID *);
__int64 v8;
NTSTATUS v9;
int v10;
WorkItem.List.Blink = 0i64;
Object = 0i64;
v2 = (__int64)v1;
v10 = 0;
v6 = 0i64;
if( (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 )
return PspInitializeServerSiloDeferred(v1);
KeInitializeEvent((INT64)&Object, 1, 0);
v9 = 0;
WorkItem.List.Flink = 0i64;
v7 = PspInitializeServerSiloDeferred;
v8 = v2;
WorkItem.WorkerRoutine = (void(__fastcall *)(void *))PspDeferredWorkerRoutine;
WorkItem.Parameter = &Object;
ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
KeWaitForSingleObject((UINT64)&Object, 6, 0, 0, 0i64);
return v9;
}Referenced by:
PspConvertSiloToServerSilo