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;
            }
        }
예제 #2
0
 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);
 }
예제 #3
0
        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();
        }