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

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

            if (packet.ntTransData.Data != null)
            {
                this.ntTransData.Data = new byte[packet.ntTransData.Data.Length];
                Array.Copy(packet.ntTransData.Data, this.ntTransData.Data, packet.ntTransData.Data.Length);
            }
        }
        public SmbNtTransactIoctlResponsePacket CreateNtTransactIoctlResponse(
            CifsServerPerConnection connection,
            SmbNtTransactIoctlRequestPacket request,
            byte[] data)
        {
            data = data ?? new byte[0];
            SmbNtTransactIoctlResponsePacket response = new SmbNtTransactIoctlResponsePacket();
            response.SmbHeader = CifsMessageUtils.CreateSmbHeader(connection, request);

            NT_TRANSACT_IOCTL_Response_NT_Trans_Data ntTransData = response.NtTransData;
            ntTransData.Data = data;
            response.NtTransData = ntTransData;

            response.UpdateCountAndOffset();

            return response;
        }