FsRtlpRemoveAndCompleteWaitingIrp

VOID __stdcall FsRtlpRemoveAndCompleteWaitingIrp(_WAITING_IRP *WaitingIrp){
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _IRP *Irp; 
  Flink = WaitingIrp->Links.Flink;
  if( (_WAITING_IRP *)Flink->Blink != WaitingIrp
    || (Blink = WaitingIrp->Links.Blink, (_WAITING_IRP *)Blink->Flink != WaitingIrp) )
  {
    __fastfail(3u);
  }
  Blink->Flink = Flink;
  Flink->Blink = Blink;
  Irp = WaitingIrp->Irp;
  if( Irp )
  {
    *((_BYTE *)Irp + 69) = KeAcquireQueuedSpinLock(7ui64);
    _InterlockedExchange64((volatile __int64 *)Irp + 13, 0i64);
    KeReleaseQueuedSpinLock(7ui64, *((_BYTE *)Irp + 69));
    *((_QWORD *)Irp + 7) = WaitingIrp->Information;
    *((_DWORD *)Irp + 12) = *((_BYTE *)Irp + 68) != 0 ? 0xC0000120 : 0;
  }
  WaitingIrp->CompletionRoutine(WaitingIrp->Context, Irp);
  ExFreePoolWithTag(WaitingIrp, 0);
}

Referenced by:

FsRtlpAcknowledgeOplockBreak
FsRtlpAcknowledgeOplockBreakByCacheFlags
FsRtlpCancelExclusiveIrp
FsRtlpCancelWaitingIrp
FsRtlpOpBatchBreakClosePending
FsRtlpOplockBreakByCacheFlags
FsRtlpOplockBreakToII
FsRtlpOplockBreakToNone
FsRtlpOplockCleanup
FsRtlpReleaseIrpsWaitingForRH
FsRtlpRequestExclusiveOplock
FsRtlpRequestShareableOplock
FsRtlpWaitOnIrp