任务管理器使用什么API来转储进程

时间:2014-07-24 23:09:20

标签: winapi dump taskmanager

有人能告诉我内置的任务管理器用什么API来转储我选择的进程吗?

如果我是对的,那不是MiniDumpWriteDump。如果不是这个,那又怎样? 非常感谢!

2 个答案:

答案 0 :(得分:4)

只有一种方法,MiniDumpWriteDump()就是这样。

您可以自己轻松查看,运行dumpbin.exe /imports c:\windows\system32\taskmgr.exe查看其使用的功能。你会看到它从DbgHelp.dll导入MiniDumpWriteDump。这些天也是DbgHelp.dll附带Windows的原因。

答案 1 :(得分:4)

简短回答,它使用MiniDumpWriteDump

详细信息(跳过了一些不必要的细节):

在Windows 7版本中,只要您想转储进程,就会在任务管理器可执行文件中调用一些包装函数以及进程ID和可执行文件名称,例如foo.exe

它使用OpenProcess获取进程的句柄,并使用HeapAlloc将其存储在堆中分配的某些结构中。

使用GetTempPathW获取某个局部变量中的临时目录,使用foo.exe附加可执行文件名称,例如PathAppendW,并使用PathRemoveExtension删除扩展名foo没有.exe,然后使用PathAddExtensionW添加新扩展,并调用PathYetAnotherMakeUniqueName来检查路径是否未使用或生成新路径foo(2).DMP。最后,它使用CreateFile获取文件句柄。

使用DuplicateHandle复制句柄并将其存储在该结构中并创建一个新线程并将该结构作为参数传递给线程函数。

线程使用参数MiniDumpWriteDump调用,DumpType设置为0x1826

MiniDumpWithFullMemory | MiniDumpWithHandleData | MiniDumpWithUnloadedModules | MiniDumpWithFullMemoryInfo | MiniDumpWithThreadInfo