Example #1
0
        private static void MiniDumpToFile(string fileToDump, MinidumpTypes dumpType)
        {
            using var fsToDump    = File.Open(fileToDump, FileMode.Create, FileAccess.ReadWrite, FileShare.Write);
            using var thisProcess = Process.GetCurrentProcess();
            var mINIDUMP_EXCEPTION_INFORMATION = new MINIDUMP_EXCEPTION_INFORMATION
            {
                ClientPointers = false,
#if WITH_EXCEPTIONPOINTERS
                ExceptionPointers = Marshal.GetExceptionPointers(),
#else
                ExceptionPointers = IntPtr.Zero,
#endif
                ThreadId = SafeNativeMethods.GetCurrentThreadId(),
            };
            var error = SafeNativeMethods.MiniDumpWriteDump(
                thisProcess.Handle,
                thisProcess.Id,
                fsToDump.SafeFileHandle,
                dumpType,
                ref mINIDUMP_EXCEPTION_INFORMATION,
                IntPtr.Zero,
                IntPtr.Zero);

            if (error > 0)
            {
                DumpMessage?.Invoke(typeof(MiniDump), new MessageEventArgs($"Mini-dumping failed with Code: {error}", "Error!", ErrorLevel.Error));
            }
        }
Example #2
0
 private static extern bool MiniDumpWriteDump_internal(IntPtr hProcess, int ProcessId, SafeHandle hFile, MinidumpTypes DumpType, ref MINIDUMP_EXCEPTION_INFORMATION ExceptionParam, IntPtr UserStreamParam, IntPtr CallackParam);
Example #3
0
 internal static int MiniDumpWriteDump(IntPtr hProcess, int ProcessId, SafeHandle hFile, MinidumpTypes DumpType, ref MINIDUMP_EXCEPTION_INFORMATION ExceptionParam, IntPtr UserStreamParam, IntPtr CallackParam)
 {
     _ = MiniDumpWriteDump_internal(hProcess, ProcessId, hFile, DumpType, ref ExceptionParam, UserStreamParam, CallackParam);
     return(Marshal.GetLastWin32Error());
 }