VfIrpLogDeleteDeviceLogs

VOID __stdcall VfIrpLogDeleteDeviceLogs(_DEVICE_OBJECT *DeviceObject){
  unsigned __int64 v2; 
  _IRPLOG_DATA *Pointer; 
  _IRPLOG_DATA *v4; 
  __int64 v5; 
  _IRPLOG_DATA **v6; 
  _IRPLOG_HEAD *HashHead; 

  HashHead = 0i64;
  v2 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(&ViIrpLogDatabaseLock);
  Pointer = ViIrpLogDatabaseFindPointer(DeviceObject, &HashHead);
  v4 = Pointer;
  if( Pointer )
  {
    if( *HashHead )
    {
      Pointer[6] |= 4u;
    }
    else
    {
      HalPutDmaAdapter(*(PADAPTER_OBJECT *)Pointer);
      v5 = *((_QWORD *)v4 + 1);
      v6 = (_IRPLOG_DATA **)*((_QWORD *)v4 + 2);
      if( *(_IRPLOG_DATA **)(v5 + 8) != v4 + 2 || *v6 != v4 + 2 )
        __fastfail(3u);
      *v6 = (_IRPLOG_DATA *)v5;
      *(_QWORD *)(v5 + 8) = v6;
      ExFreePoolWithTag(v4, 0);
    }
  }
  KxReleaseSpinLock(&ViIrpLogDatabaseLock);
  __writecr8(v2);
}

Referenced by:

VfIoDeleteDevice