private void InitFromMemory64List() { _memory64List = new MinidumpMemory64List(_dumpStream); RVA64 currentRVA = _memory64List.BaseRva; ulong count = _memory64List.Count; // Initialize all chunks. MINIDUMP_MEMORY_DESCRIPTOR64 tempMD; List <MinidumpMemoryChunk> chunks = new List <MinidumpMemoryChunk>(); for (ulong i = 0; i < count; i++) { tempMD = _memory64List.GetElement((uint)i); MinidumpMemoryChunk chunk = new MinidumpMemoryChunk { Size = tempMD.DataSize, TargetStartAddress = tempMD.StartOfMemoryRange, TargetEndAddress = tempMD.StartOfMemoryRange + tempMD.DataSize, RVA = currentRVA.Value }; currentRVA.Value += tempMD.DataSize; chunks.Add(chunk); } chunks.Sort(); SplitAndMergeChunks(chunks); _chunks = chunks.ToArray(); Count = (ulong)chunks.Count; ValidateChunks(); }
/// <summary> /// Translates from an RVA to Dump Pointer. /// </summary> /// <param name="rva">RVA within the dump</param> /// <returns>DumpPointer representing RVA.</returns> protected internal DumpPointer TranslateRVA(RVA64 rva) { return(_base.Adjust(rva.Value)); }