IoGetFileObjectFilterContext

NTSTATUS __stdcall IoGetFileObjectFilterContext(
        _FILE_OBJECT *FileObject,
        PVOID *FilterContext,
        UINT8 AllocateIfNecessary){
  _QWORD *FileObjectExtension; 
  void *v4; 
  NTSTATUS result; 

  FileObjectExtension = FileObject->FileObjectExtension;
  v4 = 0i64;
  if( FileObjectExtension )
    goto LABEL_2;
  if( !AllocateIfNecessary )
  {
    result = 0;
    goto LABEL_5;
  }
  IopAllocateFileObjectExtension(FileObject, 0i64);
  if( result >= 0 )
  {
    FileObjectExtension = FileObject->FileObjectExtension;
    if( !FileObjectExtension )
    {
LABEL_4:
      result = 0;
      goto LABEL_5;
    }
LABEL_2:
    if( FileObjectExtension != IopRevocationExtension )
      v4 = (void *)FileObjectExtension[4];
    goto LABEL_4;
  }
LABEL_5:
  *FilterContext = v4;
  return result;
}

Referenced by:

FsRtlInsertPerFileObjectContext
FsRtlPTeardownPerFileObjectContexts
FsRtlRemovePerFileObjectContext