PiDqIrpComplete

VOID __stdcall PiDqIrpComplete(
        _IRP *Irp,
        INT64 Status,
        UINT64 BytesUsed,
        _DEV_QUERY_IOCTL_CONTROL_BLOCK *ControlBlock,
        _DEV_QUERY_IOCTL_CONTROL_BLOCK *ControlBlocka){
  unsigned __int64 v5; 
  _DEV_QUERY_IOCTL_CONTROL_BLOCK *UserBuffer; 

  v5 = 0i64;
  if( (int)Status >= 0 )
  {
    if( *(_DWORD *)&Irp->Tail.CurrentStackLocation->Parameters.FileAttributes == 4653063 )
      UserBuffer = (_DEV_QUERY_IOCTL_CONTROL_BLOCK *)Irp->UserBuffer;
    else
      UserBuffer = (_DEV_QUERY_IOCTL_CONTROL_BLOCK *)Irp->AssociatedIrp.MasterIrp;
    *UserBuffer = *ControlBlock;
    v5 = (unsigned int)BytesUsed;
  }
  Irp->IoStatus.Information = v5;
  Irp->IoStatus.Status = Status;
  IofCompleteRequest(Irp, 0);
}

Referenced by:

PiDqIrpQueryCreate
PiDqIrpQueryGetResult
PiDqQueryCompletePendedIrp