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

            this.trans2Parameters.Fid = packet.trans2Parameters.Fid;
            this.trans2Parameters.FileAttributes = packet.trans2Parameters.FileAttributes;
            this.trans2Parameters.CreationTime = packet.trans2Parameters.CreationTime;
            this.trans2Parameters.FileDataSize = packet.trans2Parameters.FileDataSize;
            this.trans2Parameters.AccessMode = packet.trans2Parameters.AccessMode;
            this.trans2Parameters.ResourceType = packet.trans2Parameters.ResourceType;
            this.trans2Parameters.NMPipeStatus = packet.trans2Parameters.NMPipeStatus;
            this.trans2Parameters.OpenResults = packet.trans2Parameters.OpenResults;
            this.trans2Parameters.Reserved = packet.trans2Parameters.Reserved;
            this.trans2Parameters.ExtendedAttributeErrorOffset =
                packet.trans2Parameters.ExtendedAttributeErrorOffset;
            this.trans2Parameters.ExtendedAttributeLength = packet.trans2Parameters.ExtendedAttributeLength;
        }
        /// <summary>
        /// Deep copy constructor.
        /// </summary>
        public SmbTrans2Open2FinalResponsePacket(SmbTrans2Open2FinalResponsePacket packet)
            : base(packet)
        {
            this.InitDefaultValue();

            this.trans2Parameters.Fid            = packet.trans2Parameters.Fid;
            this.trans2Parameters.FileAttributes = packet.trans2Parameters.FileAttributes;
            this.trans2Parameters.CreationTime   = packet.trans2Parameters.CreationTime;
            this.trans2Parameters.FileDataSize   = packet.trans2Parameters.FileDataSize;
            this.trans2Parameters.AccessMode     = packet.trans2Parameters.AccessMode;
            this.trans2Parameters.ResourceType   = packet.trans2Parameters.ResourceType;
            this.trans2Parameters.NMPipeStatus   = packet.trans2Parameters.NMPipeStatus;
            this.trans2Parameters.OpenResults    = packet.trans2Parameters.OpenResults;
            this.trans2Parameters.Reserved       = packet.trans2Parameters.Reserved;
            this.trans2Parameters.ExtendedAttributeErrorOffset =
                packet.trans2Parameters.ExtendedAttributeErrorOffset;
            this.trans2Parameters.ExtendedAttributeLength = packet.trans2Parameters.ExtendedAttributeLength;
        }
        public SmbTrans2Open2FinalResponsePacket CreateTrans2Open2FinalResponse(
            CifsServerPerConnection connection,
            SmbTrans2Open2RequestPacket request,
            uint fileDataSize,
            FileTypeValue resourceType,
            SMB_NMPIPE_STATUS nmPipeStatus,
            OpenResultsValues actionTaken)
        {
            SmbTrans2Open2FinalResponsePacket response = new SmbTrans2Open2FinalResponsePacket();
            response.SmbHeader = CifsMessageUtils.CreateSmbHeader(connection, request);

            TRANS2_OPEN2_Response_Trans2_Parameters trans2Parameters = response.Trans2Parameters;
            trans2Parameters.Fid = (ushort)connection.GenerateFID();
            trans2Parameters.FileAttributes = request.Trans2Parameters.FileAttributes;
            trans2Parameters.CreationTime = (uint)DateTime.Now.Millisecond;
            trans2Parameters.FileDataSize = fileDataSize;
            trans2Parameters.AccessMode = request.Trans2Parameters.AccessMode;
            trans2Parameters.ResourceType = resourceType;
            trans2Parameters.NMPipeStatus = nmPipeStatus;
            trans2Parameters.OpenResults = actionTaken;
            trans2Parameters.Reserved = 0x00000000;
            trans2Parameters.ExtendedAttributeErrorOffset = 0;
            trans2Parameters.ExtendedAttributeLength = request.Trans2Data.ExtendedAttributeList.SizeOfListInBytes;
            response.Trans2Parameters = trans2Parameters;

            response.UpdateCountAndOffset();

            return response;
        }