private MiniDumpWriteDump ( |
||
hProcess | ||
ProcessId | int | |
hFile | ||
DumpType | ||
ExceptionParam | ||
UserStreamParam | ||
CallackParam | ||
Результат | bool |
// Token: 0x06000977 RID: 2423 RVA: 0x003B60B8 File Offset: 0x003B42B8 private static bool Write(SafeHandle fileHandle, CrashDump.Options options, CrashDump.ExceptionInfo exceptionInfo) { if (!Platform.IsWindows) { return(false); } Process expr_0E = Process.GetCurrentProcess(); IntPtr handle = expr_0E.Handle; uint id = (uint)expr_0E.Id; CrashDump.MiniDumpExceptionInformation miniDumpExceptionInformation; miniDumpExceptionInformation.ThreadId = CrashDump.GetCurrentThreadId(); miniDumpExceptionInformation.ClientPointers = false; miniDumpExceptionInformation.ExceptionPointers = IntPtr.Zero; if (exceptionInfo == CrashDump.ExceptionInfo.Present) { miniDumpExceptionInformation.ExceptionPointers = Marshal.GetExceptionPointers(); } bool result; if (miniDumpExceptionInformation.ExceptionPointers == IntPtr.Zero) { result = CrashDump.MiniDumpWriteDump(handle, id, fileHandle, (uint)options, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); } else { result = CrashDump.MiniDumpWriteDump(handle, id, fileHandle, (uint)options, ref miniDumpExceptionInformation, IntPtr.Zero, IntPtr.Zero); } return(result); }
private static bool Write(SafeHandle fileHandle, CrashDump.Options options, CrashDump.ExceptionInfo exceptionInfo) { if (!Platform.IsWindows) { return(false); } var currentProcess = Process.GetCurrentProcess(); var handle = currentProcess.Handle; var id = (uint)currentProcess.Id; CrashDump.MiniDumpExceptionInformation expParam; expParam.ThreadId = CrashDump.GetCurrentThreadId(); expParam.ClientPointers = false; expParam.ExceptionPointers = IntPtr.Zero; if (exceptionInfo == CrashDump.ExceptionInfo.Present) { expParam.ExceptionPointers = Marshal.GetExceptionPointers(); } return(!(expParam.ExceptionPointers == IntPtr.Zero) ? CrashDump.MiniDumpWriteDump(handle, id, fileHandle, (uint)options, ref expParam, IntPtr.Zero, IntPtr.Zero) : CrashDump.MiniDumpWriteDump(handle, id, fileHandle, (uint)options, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); }
public static void Create(string path) { bool flag = Program.LaunchParameters.ContainsKey("-fulldump"); using (FileStream fileStream = File.Create(path)) { Process currentProcess = Process.GetCurrentProcess(); CrashDump.MiniDumpWriteDump(currentProcess.Handle, currentProcess.Id, fileStream.SafeFileHandle.DangerousGetHandle(), flag ? CrashDump.MINIDUMP_TYPE.MiniDumpWithFullMemory : CrashDump.MINIDUMP_TYPE.MiniDumpWithIndirectlyReferencedMemory, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); } }
public static void CreateFull() { DateTime localTime = DateTime.Now.ToLocalTime(); using (FileStream fileStream = File.Create("DMP-FULL Terraria " + Main.versionNumber + " " + localTime.Year.ToString("D4") + "-" + localTime.Month.ToString("D2") + "-" + localTime.Day.ToString("D2") + " " + localTime.Hour.ToString("D2") + "_" + localTime.Minute.ToString("D2") + "_" + localTime.Second.ToString("D2") + ".dmp")) { Process currentProcess = Process.GetCurrentProcess(); CrashDump.MiniDumpWriteDump(currentProcess.Handle, currentProcess.Id, fileStream.SafeFileHandle.DangerousGetHandle(), CrashDump.MINIDUMP_TYPE.MiniDumpWithFullMemory, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); } }