PiDqQueryCompletePendedIrp

VOID __stdcall PiDqQueryCompletePendedIrp(_PI_DQ_QUERY *Query){
  __int64 v2; 
  __int64 v3; 
  UINT64 v4; 
  INT64 v5; 
  _DEV_QUERY_IOCTL_CONTROL_BLOCK *p_ControlBlock; 
  _DEV_QUERY_IOCTL_CONTROL_BLOCK ControlBlock; 

  v2 = *((_QWORD *)Query + 22);
  ControlBlock = 0i64;
  if( v2 )
  {
    v3 = *(_QWORD *)(v2 + 184);
    if( _InterlockedExchange64((volatile __int64 *)(v2 + 104), 0i64) )
    {
      v4 = 0i64;
      if( (Query[54] & 1) != 0 )
      {
        p_ControlBlock = 0i64;
        v5 = 3221225626i64;
      }
      else
      {
        PiDqQueryGetNextIoctlInfo(Query, *(unsigned int *)(v3 + 8), 0i64, &ControlBlock);
        v5 = 0i64;
        p_ControlBlock = &ControlBlock;
        v4 = 16i64;
      }
      PiDqIrpComplete(
        *((_IRP **)Query + 22),
        v5,
        v4,
        p_ControlBlock,
        *(_DEV_QUERY_IOCTL_CONTROL_BLOCK **)&ControlBlock.NextIoctl);
      Query[54] &= ~0x10u;
      *((_QWORD *)Query + 22) = 0i64;
    }
  }
}

Referenced by:

PiDqObjectManagerServiceActionQueue