FsRtlOplockBreakToNoneEx

NTSTATUS __stdcall FsRtlOplockBreakToNoneEx(
        POPLOCK Oplock,
        PIRP Irp,
        UINT32 Flags,
        PVOID Context,
        POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
        POPLOCK_FS_PREPOST_IRP PostIrpRoutine){
  PFAST_MUTEX *v8; 
  NTSTATUS v9; 
  int v10; 
  void(__fastcall *v11)(__int64, __int64); 
  POPLOCK_WAIT_COMPLETE_ROUTINE v12; 
  __int64 v14; 
  char v15[8]; 
  PVOID v16; 
  char v17; 
  v8 = (PFAST_MUTEX *)*Oplock;
  v16 = *Oplock;
  v17 = 0;
  v15[0] = 0;
  if( (Flags & 0x10) != 0 )
  {
    v9 = -1073741811;
  }
  else
  {
    v10 = Flags | 8;
    v11 = (void(__fastcall *)(__int64, __int64))PostIrpRoutine;
    v12 = CompletionRoutine;
    do
    {
      v15[0] = 0;
      if( !v17 )
      {
        ExAcquireFastMutexUnsafe(v8[19]);
        v17 = 1;
      }
      v9 = FsRtlpOplockBreakToNone(
             (__int64)v8,
             *((_QWORD *)Irp + 23),
             (__int64)Irp,
             v10,
             v14,
             (__int64)Context,
             (__int64)v12,
             v11,
             0i64,
             0i64,
             0i64,
             &v17,
             v15);
      if( !v9 )
      {
        LODWORD(v14) = 0;
        v9 = FsRtlpOplockBreakByCacheFlags(
               (__int64)v8,
               *((_QWORD *)Irp + 23),
               (__int64)Irp,
               v10,
               v14,
               28672,
               (__int64)Context,
               (__int64)v12,
               v11,
               0i64,
               0i64,
               0i64,
               &v17,
               v15);
      }
    }
    while( v15[0] );
  }
  if( v17 )
    ExReleaseFastMutexUnsafe(v8[19]);
  return v9;
}

Referenced by:

FsRtlOplockBreakToNone