First the size is written as an #writeInt(int) Int32, followed by each key-value pair written as two consecutive #writeString(String) Strings.
public virtual void WriteStringStringMap(IDictionary<string, string> map) { if (map == null) { WriteInt(0); } else { WriteInt(map.Count); foreach (KeyValuePair<string, string> entry in map) { WriteString(entry.Key); WriteString(entry.Value); } } }