static extern bool MiniDumpWriteDump( IntPtr hProcess, Int32 ProcessId, IntPtr hFile, DumpConstants.MINIDUMP_TYPE DumpType, IntPtr ExceptionParam, IntPtr UserStreamParam, IntPtr CallackParam );
public static bool WriteDump(IntPtr hProcess, Int32 ProcessId, IntPtr hFile, DumpConstants.MINIDUMP_TYPE DumpType, IntPtr ExceptionParam, IntPtr UserStreamParam, IntPtr CallackParam ) { return(MiniDumpWriteDump(hProcess, ProcessId, hFile, DumpType, ExceptionParam, UserStreamParam, CallackParam)); }
private static void ProcessTheParameters(int processId, string dumpFolder, bool isFull) { Process p = Process.GetProcessById(processId); DumpFolder = dumpFolder; string dumpFile = Path.Combine(dumpFolder, DateTime.Now.ToString(DumpConstants.DATETYPEDefault) + ".dump"); FileStream fs = new FileStream(dumpFile, FileMode.Create, FileAccess.Write); DumpConstants.MINIDUMP_TYPE dumpType = isFull ? DumpConstants.MINIDUMP_TYPE.MiniDumpWithFullMemory : DumpConstants.MINIDUMP_TYPE.MiniDumpNormal; DumpConstants.SYSTEM_INFO systemInfo = new DumpConstants.SYSTEM_INFO(); kernel32.GetSystemInfo(ref systemInfo); CreateMiniDump(p, fs, systemInfo.wProcessorArchitecture == 9, dumpType); }
private static void CreateMiniDump(Process process, FileStream fs, bool is64bit, DumpConstants.MINIDUMP_TYPE dumpType) { bool retCode = false; if (is64bit) { retCode = DbgHelp_x64.WriteDump(process.Handle, process.Id, fs.SafeFileHandle.DangerousGetHandle(), dumpType, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); } else { retCode = DbgHelp_x86.WriteDump(process.Handle, process.Id, fs.SafeFileHandle.DangerousGetHandle(), dumpType, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); } if (!retCode) { GetSystemInfo(); return; } else { } }