// All of the Marshal.Copy methods copy to arrays. We need to copy between IntPtrs. // Provide a friendly wrapper over a raw pinvoke to RtlMoveMemory. // Note that we actually want a copy, but RtlCopyMemory is a macro and compiler intrinisic // that we can't pinvoke to. private static void RawCopy(IntPtr src, IntPtr dest, uint numBytes) { DumpReader.RtlMoveMemory(dest, src, new IntPtr(numBytes)); }
/// <summary> /// Constructor /// </summary> /// <param name="owner">owning DumpReader</param> /// <param name="raw">unmanaged dump structure describing the module</param> internal DumpModule(DumpReader owner, MINIDUMP_MODULE raw) { Raw = raw; _owner = owner; }
/// <summary> /// Constructor for DumpThread /// </summary> /// <param name="owner">owning DumpReader object</param> /// <param name="raw">unmanaged structure in dump describing the thread</param> internal DumpThread(DumpReader owner, MINIDUMP_THREAD raw) { _raw = raw; _owner = owner; }