Я борюсь за получение информации о ручках через Minidump (DbgHelp.h).Получение данных с помощью MiniDump (DbgHelp.h)
Я получаю список MINIDUMP_HANDLE_DESCRIPTOR_2
из отображенного потока файлов .. Тогда я получаю за каждый дескриптор MINIDUMP_HANDLE_OBJECT_INFORMATION
, используя ObjectInfoRva
поля.
Однако я не могу понять, какая информация эта структура MINIDUMP_HANDLE_OBJECT_INFORMATION
дает мне, я не нашел примеров в Интернете для извлечения значимой информации из MINIDUMP_HANDLE_OBJECT_INFORMATION
, и документация не очень полезна.
Как я могу использовать структурные данные MINIDUMP_HANDLE_OBJECT_INFORMATION
, чтобы получить человекообразные данные? Я имею в виду, что мне нужно сделать с этим? Я всегда получаю 0 на InfoType
подал, что означает - MiniHandleObjectInformationNone
.
MINIDUMP_HANDLE_OBJECT_INFORMATION структура:
public struct MINIDUMP_HANDLE_OBJECT_INFORMATION
{
public uint NextInfoRva;
public MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE InfoType;
public UInt32 SizeOfInfo;
}
Я сделал некоторые эксперимент с MINIDUMP_HANDLE_OBJECT_INFORMATION структуры
Когда я получаю-структуру, я способен считывать строку с адреса RVA с SizeOfInfo
размера , Вот я утоляет получать «Каталог» в виде цепочки на всех ручках дескрипторов, которые я получил ...
ссылка на документ:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680375(v=vs.85).aspx
Любая помощь будет оценена :)
Мой процесс, на который я пытаюсь применить его, использует вызовы WaitForMultipleObjects
и WaitForSingleObject
Kernel32
.
Ссылка на мою реализацию:
Ссылка на WinDbg выхода !handle
команды, которые я выполнить на тот же файл дампа: https://docs.google.com/document/d/1Hjid-2dcM0aZrg5A1p5VrCBSysU_VQhynXdBAvXV29Q/edit?usp=sharing
Может быть, проблема в том, что я не установить допустимые значения для моего перечисления MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE, кто-нибудь знаком с надежным источником с этим объявлением значений enum? Я не нашел ничего официального.
Просто, чтобы прояснить ситуацию.
В WinDbj, я получаю ту же информацию, как я получаю от MINIDUMP_HANDLE_DESCRIPTOR_2, Например, если WinDbg команда обрабатывать имеет следующий вывод:
Handle 00000004
Type Directory
Handle 00000008
Type Directory
Handle 0000000c
Type Event
Handle 00000010
Type Event
Handle 00000014
Type File
…
Я getthe же данные из MINIDUMP_HANDLE_DESCRIPTOR_2
ObjectName и TypeName которые имеют тип MINIDUMP_STRING
.
Информация, которую я не может get - это тот, который находится в структуре MINIDUMP_HANDLE_OBJECT_INFORMATION
. Что не видно на командном выходе !hanlde
.
Какую информацию предполагается разместить в MINIDUMP_HANDLE_OBJECT_INFORMATION?
Наиболее вероятной причиной является документированный, у вас просто нет интересных манипуляций в этом процессе. Вы получаете дополнительную информацию только для ручек потоков, процессов и мьютексов. Остальные «нет дополнительной информации», 0. –
Я собираю эту информацию о процессе, который ждет нескольких мьютексов, предположим, что это какая-то информация, потому что, если я рассматриваю процесс с ClrMd, я получаю имена мьютексов. .. –
Управляемый объект Mutex не имеет ничего общего с неуправляемым. Эта таблица предназначена для использования отладчика, для сравнения используется команда управления Windbg !. –