PspQueueDeferredWorkAndWait
INT64 __stdcall PspQueueDeferredWorkAndWait(PVOID Parameter){
void *v1;
__int64 v2;
struct _WORK_QUEUE_ITEM WorkItem;
struct _KEVENT Event;
INT64(__stdcall *v6)(PVOID);
__int64 v7;
unsigned int v8;
int v9;
WorkItem.List.Blink = 0i64;
memset(&Event, 0, sizeof(Event));
v2 = (__int64)v1;
v9 = 0;
if( (*(_DWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 2172i64) & 0x1000) != 0 )
return PspInitializeServerSiloDeferred(v1);
KeInitializeEvent(&Event, SynchronizationEvent, 0);
v8 = 0;
WorkItem.List.Flink = 0i64;
v6 = PspInitializeServerSiloDeferred;
v7 = v2;
WorkItem.WorkerRoutine = (void(__fastcall *)(void *))PspDeferredWorkerRoutine;
WorkItem.Parameter = &Event;
ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
KeWaitForSingleObject(&Event, UserRequest, 0, 0, 0i64);
return v8;
}Referenced by:
PspConvertSiloToServerSilo