RawCleanup
__int64 __fastcall RawCleanup(PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader, PIRP Irp, __int64 a3){
_FAST_MUTEX *p_PagingIoResource;
char v7;
void *v8;
p_PagingIoResource = (_FAST_MUTEX *)&AdvancedHeader[2].PagingIoResource;
v7 = 0;
ExAcquireFastMutex((FAST_MUTEX *)&AdvancedHeader[2].PagingIoResource);
IoRemoveLinkShareAccessEx(*(_QWORD *)(a3 + 48), (_DWORD *)&AdvancedHeader[1].Resource + 1, 0i64, 0);
v8 = *(void **)(a3 + 48);
if( v8 == *(void **)&AdvancedHeader[2].NodeTypeCode )
{
*(_DWORD *)&AdvancedHeader[1].NodeTypeCode &= ~1u;
v7 = 1;
*(_QWORD *)&AdvancedHeader[2].NodeTypeCode = 0i64;
v8 = *(void **)(a3 + 48);
}
if( v8 == AdvancedHeader[1].ReservedContext )
{
AdvancedHeader[1].ReservedContext = 0i64;
RawInitiateDeleteVolume((INT64)AdvancedHeader, 1i64, 0i64);
}
KeReleaseGuardedMutex(p_PagingIoResource);
if( v7 )
FsRtlNotifyVolumeEvent(*(_FILE_OBJECT **)(a3 + 48), 5ui64);
*((_DWORD *)Irp + 12) = 0;
IofCompleteRequest(Irp, 1);
return 0i64;
}Referenced by:
RawDispatch