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