Minidump (DbgHelp.h) を介してハンドル情報を取得するのに苦労しています。
MINIDUMP_HANDLE_DESCRIPTOR_2
マップされたファイルストリームからのリストを取得しています。次に、フィールドMINIDUMP_HANDLE_OBJECT_INFORMATION
を使用して各記述子 a を取得しています。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 コマンド出力へのリンク: https://docs.google.com/document/d/1Hjid-2dcM0aZrg5A1p5VrCBSysU_VQhynXdBAvXV29Q/edit?usp=sharing!handle
おそらく問題は、MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE列挙に有効な値を設定していないことです.この列挙値の宣言で信頼できるソースに精通している人はいますか? 公式なものは見つかりませんでした。
明確にするためだけに。
WinDbj では、MINIDUMP_HANDLE_DESCRIPTOR_2 から取得したものと同じ情報を取得します。たとえば、WinDbg !handle コマンドの出力が次の場合:
Handle 00000004
Type Directory
Handle 00000008
Type Directory
Handle 0000000c
Type Event
Handle 00000010
Type Event
Handle 00000014
Type File
…
MINIDUMP_HANDLE_DESCRIPTOR_2
タイプのObjectName と TypeNameから同じデータを取得できますMINIDUMP_STRING
。
取得できない情報は、MINIDUMP_HANDLE_OBJECT_INFORMATION
構造体にある情報です。!hanlde
コマンド出力には表示されません。
MINIDUMP_HANDLE_OBJECT_INFORMATION にはどのような情報が含まれていると思われますか?