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); }
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); }