// Token: 0x06000960 RID: 2400 RVA: 0x0002C2D8 File Offset: 0x0002A4D8 public static EseLogRecordPosition GetLastLogRecordPosition(EseLogRecord[] records) { EseLogRecordPosition eseLogRecordPosition = null; if (records.Length > 0) { int logSectorSize = 0; EseLogHeaderRecord eseLogHeaderRecord = records[0] as EseLogHeaderRecord; if (eseLogHeaderRecord != null) { logSectorSize = eseLogHeaderRecord.SectorSize; } logSectorSize = EseLogPos.CheckSectorSize(logSectorSize); eseLogRecordPosition = new EseLogRecordPosition(); eseLogRecordPosition.LogSectorSize = logSectorSize; for (int i = records.Length - 1; i >= 1; i--) { if (records[i].LogPos != null) { eseLogRecordPosition.LogPos = records[i].LogPos; eseLogRecordPosition.LogRecordLength = records[i].LogRecSize; break; } } } return(eseLogRecordPosition); }
// Token: 0x0600097A RID: 2426 RVA: 0x0002C978 File Offset: 0x0002AB78 private static void InternalTestParseLogfileDump() { ExTraceGlobals.EseutilWrapperTracer.TraceDebug(0L, "EseHelper.InternalTestParseLogfileDump"); string value = string.Concat(new string[] { "LHGI, Create time:12/14/2005 15:30:42 Rand:9483281 Computer:, 00004B9E, 01/23/2006 09:09:02, 01/23/2006 09:06:33, 7.3704.8, 0x0", Environment.NewLine, "LHGI, Create time:01/28/2006 16:32:56 Rand:277109190 Computer:, 00000001, 01/28/2006 16:32:56, 00/00/1900 00:00:00, 7.3704.8, 0x1", Environment.NewLine, "LHAI, 1, D:\\StoreA\\MDB1\\priv1.edb", Environment.NewLine, "LRDI, 0000000075CBABC3, CreateDB , 1, C:\\temp3\\bar.edb", Environment.NewLine, "LRDI, 0000000075FBABC3, AttachDB , 2, bar.edb", Environment.NewLine, "LRDI, 0047000075CBABC3, DetachDB , 6, Z:\\temp3\\database files\\bar.edb", Environment.NewLine, "LRCI, 514F9292BBAD5F0A", Environment.NewLine, "LRPI, 00000000EF1FB879, Insert , 005FE92F, 0000036E, 00000001, FFFFFFFFFFFFFFFF, 0000000008DCDFD0", Environment.NewLine, "LRMI, 00000000D01F91B3, McroComit", Environment.NewLine, "LRMI, 00000000D01F91B3, McroComit", Environment.NewLine, "LTEL", Environment.NewLine, string.Empty }); string text = EseHelper.CreateTemporaryFile(Path.GetTempPath()); DiagCore.RetailAssert(File.Exists(text), "Temporary file {0} doesn't exist.", new object[] { text }); using (StreamWriter streamWriter = new StreamWriter(text, false, Encoding.Unicode)) { streamWriter.Write(value); } EseLogRecord[] array = EseHelper.ParseLogfileDump(text); DiagCore.RetailAssert(!File.Exists(text), "File {0} should have been deleted.", new object[] { text }); foreach (EseLogRecord eseLogRecord in array) { string value2 = eseLogRecord.ToString(); DiagCore.RetailAssert(!string.IsNullOrEmpty(value2), "Empty string returned from EseLogRecord.ToString().", new object[0]); } int num = 0; EseLogHeaderRecord eseLogHeaderRecord = array[num++] as EseLogHeaderRecord; DiagCore.RetailAssert(eseLogHeaderRecord.Signature == "Create time:12/14/2005 15:30:42 Rand:9483281 Computer:", "EseLogHeaderRecord.Signature not correct.", new object[0]); DiagCore.RetailAssert(eseLogHeaderRecord.Generation == 19358L, "EseLogHeaderRecord.Generation not correct.", new object[0]); DateTime value3 = new DateTime(2006, 1, 23, 9, 9, 2); DiagCore.RetailAssert(eseLogHeaderRecord.CreationTime.Equals(value3), "EseLogHeaderRecord.CreationTime not correct.", new object[0]); value3 = new DateTime(2006, 1, 23, 9, 6, 33); DiagCore.RetailAssert(eseLogHeaderRecord.PreviousGenerationCreationTime.Equals(value3), "EseLogHeaderRecord.PreviousGenerationCreationTime not correct.", new object[0]); DiagCore.RetailAssert(eseLogHeaderRecord.LogFormatVersion == "7.3704.8", "EseLogHeaderRecord.LogFormatVersion not correct.", new object[0]); DiagCore.RetailAssert(!eseLogHeaderRecord.IsCircularLoggingOn, "EseLogHeaderRecord.IsCircularLoggingOn not correct.", new object[0]); eseLogHeaderRecord = (array[num++] as EseLogHeaderRecord); DiagCore.RetailAssert(eseLogHeaderRecord.PreviousGenerationCreationTime.Equals(DateTime.MinValue), "EseLogHeaderRecord.PreviousGenerationCreationTime not correct.", new object[0]); DiagCore.RetailAssert(eseLogHeaderRecord.IsCircularLoggingOn, "EseLogHeaderRecord.IsCircularLoggingOn not correct.", new object[0]); EseAttachInfoRecord eseAttachInfoRecord = array[num++] as EseAttachInfoRecord; DiagCore.RetailAssert(eseAttachInfoRecord.DatabaseId == 1, "EseAttachInfoRecord.DatabaseId not correct.", new object[0]); DiagCore.RetailAssert(eseAttachInfoRecord.Database == "D:\\StoreA\\MDB1\\priv1.edb", "EseAttachInfoRecord.Database not correct.", new object[0]); EseDatabaseFileRecord eseDatabaseFileRecord = array[num++] as EseDatabaseFileRecord; DiagCore.RetailAssert(eseDatabaseFileRecord.Checksum == 1976282051UL, "EseDatabaseFileRecord.Checksum not correct.", new object[0]); DiagCore.RetailAssert(eseDatabaseFileRecord.DatabaseId == 1, "EseDatabaseFileRecord.DatabaseId not correct.", new object[0]); DiagCore.RetailAssert(eseDatabaseFileRecord.Database == "C:\\temp3\\bar.edb", "EseDatabaseFileRecord.Database not correct.", new object[0]); DiagCore.RetailAssert(eseDatabaseFileRecord.Operation == DatabaseOperation.Create, "EseDatabaseFileRecord.Operation not correct.", new object[0]); eseDatabaseFileRecord = (array[num++] as EseDatabaseFileRecord); DiagCore.RetailAssert(eseDatabaseFileRecord.Operation == DatabaseOperation.Attach, "EseDatabaseFileRecord.Operation not correct.", new object[0]); eseDatabaseFileRecord = (array[num++] as EseDatabaseFileRecord); DiagCore.RetailAssert(eseDatabaseFileRecord.Operation == DatabaseOperation.Detach, "EseDatabaseFileRecord.Operation not correct.", new object[0]); DiagCore.RetailAssert(eseDatabaseFileRecord.Database == "Z:\\temp3\\database files\\bar.edb", "EseDatabaseFileRecord.Database not correct.", new object[0]); EseChecksumRecord eseChecksumRecord = array[num++] as EseChecksumRecord; DiagCore.RetailAssert(eseChecksumRecord.Checksum == 5859062799143886602UL, "EseChecksumRecord.Checksum not correct.", new object[0]); EsePageRecord esePageRecord = array[num++] as EsePageRecord; DiagCore.RetailAssert(esePageRecord.Checksum == (ulong)-283133831, "EsePageRecord.Checksum not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.Operation == "Insert", "EsePageRecord.Operation not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.PageNumber == 6285615L, "EsePageRecord.PageNumber not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.ObjectId == 878L, "EsePageRecord.ObjectId not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.DatabaseId == 1L, "EsePageRecord.DatabaseId not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.DbtimeBefore == ulong.MaxValue, "EsePageRecord.DbtimeBefore not correct.", new object[0]); DiagCore.RetailAssert(esePageRecord.DbtimeAfter == 148692944UL, "EsePageRecord.DbtimeAfter not correct.", new object[0]); EseMiscRecord eseMiscRecord = array[num++] as EseMiscRecord; DiagCore.RetailAssert(eseMiscRecord.Checksum == (ulong)-803237453, "EseMiscRecord.Checksum not correct.", new object[0]); DiagCore.RetailAssert(eseMiscRecord.Operation == "McroComit", "EseMiscRecord.Operation not correct.", new object[0]); DiagCore.RetailAssert(array[num].ToString() == array[num - 1].ToString(), "Records not equal.", new object[0]); DiagCore.RetailAssert(array[num].ToString() != array[num - 2].ToString(), "Records equal.", new object[0]); EseLogRecord eseLogRecord2 = array[num++]; }