ExpDeleteWorkerFactory
VOID __stdcall ExpDeleteWorkerFactory(PVOID Object){
UINT64 *v2;
__int64 v3;
struct _DMA_ADAPTER *v4;
char v5;
_WNF_STATE_NAME_LIFETIME v6;
_WNF_DATA_SCOPE v7;
UINT8 v8;
struct _KLOCK_QUEUE_HANDLE LockHandle;
v2 = (UINT64 *)*((_QWORD *)Object + 2);
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock(v2, &LockHandle);
*(_BYTE *)(*((_QWORD *)Object + 2) + 34i64) = 1;
v3 = *((_QWORD *)Object + 2);
v4 = *(struct _DMA_ADAPTER **)(v3 + 8);
v5 = *(_BYTE *)(v3 + 32);
KeReleaseInStackQueuedSpinLock(&LockHandle);
ObfDereferenceObjectWithTag(*((PVOID *)Object + 6), 0x66577845ui64);
ObCloseHandle(*((PVOID *)Object + 5), 0);
HalPutDmaAdapter(v4);
if( !v5 )
{
IoFreeMiniCompletionPacket(
*(_WNF_STATE_NAME **)(*((_QWORD *)Object + 2) + 16i64),
v6,
v7,
v8,
(const _WNF_TYPE_ID *)LockHandle.LockQueue.Next,
(UINT64)LockHandle.LockQueue.Lock,
*(VOID **)&LockHandle.OldIrql);
ExFreePoolWithTag(*((PVOID *)Object + 2), 0);
}
}Referenced by:
No references.