Какой API использует диспетчер задач для создания дампа процесса

Может ли кто-нибудь сказать мне, какой API использует встроенный диспетчер задач Windows для дампа процесса, который я выбираю?

Если я прав, это не MiniDumpWriteDump. Если не это, то что? Большое спасибо!


person Unc3nZureD    schedule 24.07.2014    source источник


Ответы (2)


Короткий ответ, он использует MiniDumpWriteDump.

Детали (некоторые ненужные детали были опущены):

В версии для Windows 7 есть некоторая функция-оболочка в исполняемом файле диспетчера задач, которая вызывается вместе с идентификатором процесса и именем исполняемого файла, например 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
person Community    schedule 25.07.2014

Есть только один способ: MiniDumpWriteDump().

Вы можете легко убедиться в этом сами, запустив dumpbin.exe /imports c:\windows\system32\taskmgr.exe, чтобы увидеть, какие функции он использует. Вы увидите, что он импортирует MiniDumpWriteDump из DbgHelp.dll. Также причина, по которой DbgHelp.dll поставляется с Windows в наши дни.

person Hans Passant    schedule 25.07.2014