internal OneOffParticipantEntryId(ParticipantEntryId.Reader reader) { this.flags = (OneOffFlag)reader.ReadUInt32(); Encoding encoding = ((this.flags & (OneOffFlag)2147483648U) == (OneOffFlag)2147483648U) ? Encoding.Unicode : CTSGlobals.AsciiEncoding; this.emailDisplayName = Util.NullIf <string>(reader.ReadZString(encoding), string.Empty); this.emailAddressType = Util.NullIf <string>(reader.ReadZString(encoding), string.Empty); this.emailAddress = Util.NullIf <string>(reader.ReadZString(encoding), string.Empty); reader.EnsureEnd(); if (this.emailAddress == "Unknown") { this.emailAddress = null; } }
private static StoreObjectId.StoreEntryId ParseStoreEntryId(byte[] entryId) { StoreObjectId.StoreEntryId result; using (ParticipantEntryId.Reader reader = new ParticipantEntryId.Reader(entryId)) { try { bool flag = false; reader.BaseStream.Seek(22L, SeekOrigin.Begin); if (reader.BytesRemaining > 0) { string text = reader.ReadZString(CTSGlobals.AsciiEncoding); if (text.Equals("emsmdb.dll", StringComparison.OrdinalIgnoreCase)) { flag = true; } } if (flag) { reader.BaseStream.Seek(36L, SeekOrigin.Begin); } else { reader.BaseStream.Seek(0L, SeekOrigin.Begin); } result.MapiFlags = reader.ReadInt32(); result.MapiUid = reader.ReadGuid(); result.StoreFlags = (OpenStoreFlag)reader.ReadInt32(); result.ServerName = reader.ReadZString(CTSGlobals.AsciiEncoding); if ((result.StoreFlags & OpenStoreFlag.Public) != OpenStoreFlag.Public) { result.LegacyDn = reader.ReadZString(CTSGlobals.AsciiEncoding); } else { result.LegacyDn = string.Empty; } } catch (EndOfStreamException innerException) { throw new CorruptDataException(ServerStrings.ExInvalidIdFormat, innerException); } } return(result); }
internal ADParticipantEntryId(ParticipantEntryId.WabEntryFlag?flags, ParticipantEntryId.Reader reader) { uint num = reader.ReadUInt32(); if (num != 1U) { throw new NotSupportedException(ServerStrings.ExUnsupportedABProvider("Exchange WAB", num.ToString())); } this.legacyRecipientDisplayType = new LegacyRecipientDisplayType?((LegacyRecipientDisplayType)reader.ReadUInt32()); if (flags == null && this.legacyRecipientDisplayType == LegacyRecipientDisplayType.MailUser) { this.legacyRecipientDisplayType = null; } this.legacyDN = reader.ReadZString(CTSGlobals.AsciiEncoding); this.flags = ADParticipantEntryId.ReplaceObjectTypeInformation(flags ?? ParticipantEntryId.WabEntryFlag.Envelope, ref this.legacyRecipientDisplayType, this.legacyDN); this.useWabFormat = (flags != null); reader.EnsureEnd(); }