/// <summary> /// convert the payload of write response packet from sub class format to base class format, that is Smb /// to Cifs format. /// </summary> /// <param name="subClassFormatPayload">the sub class format, Smb format.</param> /// <returns>the base class format, Cifs format</returns> internal static Cifs.SMB_COM_WRITE_ANDX_Response_SMB_Parameters ConvertSmbComWriteResponsePacketPayload( Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters subClassFormatPayload) { Cifs.SMB_COM_WRITE_ANDX_Response_SMB_Parameters baseClassFormatPayload = new Cifs.SMB_COM_WRITE_ANDX_Response_SMB_Parameters(); baseClassFormatPayload.WordCount = subClassFormatPayload.WordCount; baseClassFormatPayload.AndXCommand = subClassFormatPayload.AndXCommand; baseClassFormatPayload.AndXReserved = subClassFormatPayload.AndXReserved; baseClassFormatPayload.AndXOffset = subClassFormatPayload.AndXOffset; baseClassFormatPayload.Count = subClassFormatPayload.Count; baseClassFormatPayload.Available = subClassFormatPayload.Available; // save CountHigh to high 2 bytes in Reserved. baseClassFormatPayload.Reserved = (uint)(subClassFormatPayload.Reserved << 16); baseClassFormatPayload.Reserved |= subClassFormatPayload.CountHigh; return(baseClassFormatPayload); }
/// <summary> /// convert the payload of write response packet from base class format to sub class format, that is /// Cifs to Smb format. /// </summary> /// <param name="baseClassFormatPayload">the base class format, Cifs format.</param> /// <returns>the sub class format, Smb format</returns> internal static Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters ConvertSmbComWriteResponsePacketPayload( Cifs.SMB_COM_WRITE_ANDX_Response_SMB_Parameters baseClassFormatPayload) { Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters subClassFormatPayload = new Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters(); subClassFormatPayload.WordCount = baseClassFormatPayload.WordCount; subClassFormatPayload.AndXCommand = baseClassFormatPayload.AndXCommand; subClassFormatPayload.AndXReserved = baseClassFormatPayload.AndXReserved; subClassFormatPayload.AndXOffset = baseClassFormatPayload.AndXOffset; subClassFormatPayload.Count = baseClassFormatPayload.Count; subClassFormatPayload.Available = baseClassFormatPayload.Available; // get CountHigh from the low 2 bytes of Reserved subClassFormatPayload.CountHigh = (ushort)baseClassFormatPayload.Reserved; subClassFormatPayload.Reserved = (ushort)(baseClassFormatPayload.Reserved >> 16); return(subClassFormatPayload); }
/// <summary> /// convert the payload of write response packet from base class format to sub class format, that is /// Cifs to Smb format. /// </summary> /// <param name="baseClassFormatPayload">the base class format, Cifs format.</param> /// <returns>the sub class format, Smb format</returns> internal static Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters ConvertSmbComWriteResponsePacketPayload( Cifs.SMB_COM_WRITE_ANDX_Response_SMB_Parameters baseClassFormatPayload) { Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters subClassFormatPayload = new Smb.SMB_COM_WRITE_ANDX_Response_SMB_Parameters(); subClassFormatPayload.WordCount = baseClassFormatPayload.WordCount; subClassFormatPayload.AndXCommand = baseClassFormatPayload.AndXCommand; subClassFormatPayload.AndXReserved = baseClassFormatPayload.AndXReserved; subClassFormatPayload.AndXOffset = baseClassFormatPayload.AndXOffset; subClassFormatPayload.Count = baseClassFormatPayload.Count; subClassFormatPayload.Available = baseClassFormatPayload.Available; // get CountHigh from the low 2 bytes of Reserved subClassFormatPayload.CountHigh = (ushort)baseClassFormatPayload.Reserved; subClassFormatPayload.Reserved = (ushort)(baseClassFormatPayload.Reserved >> 16); return subClassFormatPayload; }