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