/// <summary>
        /// Deep copy constructor.
        /// </summary>
        public SmbTransReadNmpipeSuccessResponsePacket(SmbTransReadNmpipeSuccessResponsePacket packet)
            : base(packet)
        {
            this.InitDefaultValue();

            if (packet.transData.ReadData != null)
            {
                this.transData.ReadData = new byte[packet.transData.ReadData.Length];
                Array.Copy(packet.transData.ReadData, this.transData.ReadData, packet.transData.ReadData.Length);
            }
        }
        /// <summary>
        /// Deep copy constructor.
        /// </summary>
        public SmbTransReadNmpipeSuccessResponsePacket(SmbTransReadNmpipeSuccessResponsePacket packet)
            : base(packet)
        {
            this.InitDefaultValue();

            if (packet.transData.ReadData != null)
            {
                this.transData.ReadData = new byte[packet.transData.ReadData.Length];
                Array.Copy(packet.transData.ReadData, this.transData.ReadData, packet.transData.ReadData.Length);
            }
        }
        public SmbTransReadNmpipeSuccessResponsePacket CreateTransReadNmpipeSuccessResponse(
            CifsServerPerConnection connection,
            SmbTransReadNmpipeRequestPacket request,
            byte[] readData)
        {
            readData = readData ?? new byte[0];
            SmbTransReadNmpipeSuccessResponsePacket response = new SmbTransReadNmpipeSuccessResponsePacket();
            response.SmbHeader = CifsMessageUtils.CreateSmbHeader(connection, request);

            TRANS_READ_NMPIPE_Response_Trans_Data transData = response.TransData;
            transData.ReadData = readData;

            response.UpdateCountAndOffset();

            return response;
        }