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.