/// <summary> /// Deep copy constructor. /// </summary> public SmbTransQueryNmpipeInfoSuccessResponsePacket(SmbTransQueryNmpipeInfoSuccessResponsePacket packet) : base(packet) { this.InitDefaultValue(); this.transData.OutputBufferSize = packet.transData.OutputBufferSize; this.transData.InputBufferSize = packet.transData.InputBufferSize; this.transData.MaximumInstances = packet.transData.MaximumInstances; this.transData.CurrentInstances = packet.transData.CurrentInstances; this.transData.PipeNameLength = packet.transData.PipeNameLength; if (packet.transData.PipeName != null) { this.transData.PipeName = new byte[packet.transData.PipeName.Length]; Array.Copy(packet.transData.PipeName, this.transData.PipeName, packet.transData.PipeName.Length); } if (packet.transData.Pad != null) { this.transData.Pad = new byte[packet.transData.Pad.Length]; Array.Copy(packet.transData.Pad, this.transData.Pad, packet.transData.Pad.Length); } }
public SmbTransQueryNmpipeInfoSuccessResponsePacket CreateTransQueryNmpipeInfoSuccessResponse( CifsServerPerConnection connection, SmbTransQueryNmpipeInfoRequestPacket request, ushort outputBufferSize, ushort inputBufferSize, byte maximumInstances, byte currentInstances, string pipeName ) { SmbTransQueryNmpipeInfoSuccessResponsePacket response = new SmbTransQueryNmpipeInfoSuccessResponsePacket(); response.SmbHeader = CifsMessageUtils.CreateSmbHeader(connection, request); bool isUnicode = (response.SmbHeader.Flags2 & SmbFlags2.SMB_FLAGS2_UNICODE) == SmbFlags2.SMB_FLAGS2_UNICODE; TRANS_QUERY_NMPIPE_INFO_Response_Trans_Data transData = response.TransData; transData.OutputBufferSize = outputBufferSize; transData.InputBufferSize = inputBufferSize; transData.MaximumInstances = maximumInstances; transData.CurrentInstances = currentInstances; transData.PipeName = CifsMessageUtils.ToSmbStringBytes(pipeName, isUnicode); transData.PipeNameLength = (byte)transData.PipeName.Length; transData.Pad = new byte[isUnicode? 1 : 0]; response.TransData = transData; response.UpdateCountAndOffset(); return response; }