예제 #1
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);
 }
예제 #2
0
        private static IList <ParticipantEntryId> FromFlatEntryList(ParticipantEntryId.Reader reader)
        {
            int num = reader.ReadInt32();

            reader.ReadInt32();
            IList <ParticipantEntryId> list = new List <ParticipantEntryId>();

            for (int i = 0; i < num; i++)
            {
                int num2 = reader.ReadInt32();
                list.Add(ParticipantEntryId.TryFromEntryId(reader.TearNext(num2)));
                if (reader.BytesRemaining != 0)
                {
                    reader.ReadPadding(num2, 4);
                }
            }
            reader.EnsureEnd();
            return(list);
        }