RawCleanupVcb
VOID __stdcall RawCleanupVcb(PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader){
void *Oplock;
_ERESOURCE *Resource;
Oplock = AdvancedHeader[1].Oplock;
if( Oplock )
{
ExFreePoolWithTag(Oplock, 0);
AdvancedHeader[1].Oplock = 0i64;
}
else if( (*(_DWORD *)&AdvancedHeader[1].NodeTypeCode & 8) != 0 )
{
ExFreePoolWithTag(AdvancedHeader[1].FileContextSupportPointer, 0);
AdvancedHeader[1].FileContextSupportPointer = 0i64;
}
if( (*(_DWORD *)&AdvancedHeader[1].NodeTypeCode & 0x10) != 0 )
FsRtlTeardownPerStreamContexts(AdvancedHeader);
Resource = AdvancedHeader[2].Resource;
if( Resource )
ExFreeCacheAwareRundownProtection((PEX_RUNDOWN_REF_CACHE_AWARE)Resource);
AdvancedHeader[2].Resource = 0i64;
}Referenced by:
RawCheckForDeleteVolume
RawInitiateDeleteVolume
RawMountVolume