MiniDumpWriteDump(C#)为特定进程生成零长度转储文件
-
在特定进程内执行MiniDumpWriteDump可提供健康的转储文件。
-
从外部进程执行MiniDumpWriteDump,其中hProcess和processId指向上述特定进程,提供零长度转储文件
-
与仅指向FireFox的#2相同,例如提供健康的转储文件
据我所知,我尝试转储的特定进程以低权限运行,我的外部进程正在从管理员CMD窗口执行。
[DllImport("dbghelp.dll", EntryPoint = "MiniDumpWriteDump", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] private static extern bool MiniDumpWriteDump(IntPtr hProcess, uint processId, SafeHandle hFile, uint dumpType, IntPtr expParam, IntPtr userStreamParam, IntPtr callbackParam);
笔记:
- 我正在刷新,关闭并正确处理文件流
- MiniDumpWriteDump返回false,GetLastWin32Error返回: -2147024597
- 提到的特定进程(点网服务器项目)具有与FireFox相同的安全选项(例如,转储在Notepad ++进程上工作)。
好..找到了解决方案..
外部流程项目是为“AnyCPU”平台构建的(因为它不执行只有64位命令,它运行的是32位)。 将其设置为x64可以转储另一个64位进程。
我会向遇到这个问题的人推荐创建单独的项目,一个用于32位,一个用于64位。