Nikolay Sivov : winedump: Add support for ThreadInfoListStream stream.
Alexandre Julliard
julliard at winehq.org
Wed May 18 15:38:30 CDT 2022
Module: wine
Branch: master
Commit: d50f7b02a953d1dc524a8f01c06036a90308ee8b
URL: https://source.winehq.org/git/wine.git/?a=commit;h=d50f7b02a953d1dc524a8f01c06036a90308ee8b
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue May 17 22:20:38 2022 +0300
winedump: Add support for ThreadInfoListStream stream.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/minidumpapiset.h | 21 +++++++++++++++++++++
tools/winedump/minidump.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/include/minidumpapiset.h b/include/minidumpapiset.h
index 73994c0d3eb..b3a7737bd13 100644
--- a/include/minidumpapiset.h
+++ b/include/minidumpapiset.h
@@ -405,6 +405,27 @@ typedef struct _MINIDUMP_HANDLE_DESCRIPTOR_2
ULONG32 Reserved0;
} MINIDUMP_HANDLE_DESCRIPTOR_2, *PMINIDUMP_HANDLE_DESCRIPTOR_2;
+typedef struct _MINIDUMP_THREAD_INFO
+{
+ ULONG32 ThreadId;
+ ULONG32 DumpFlags;
+ ULONG32 DumpError;
+ ULONG32 ExitStatus;
+ ULONG64 CreateTime;
+ ULONG64 ExitTime;
+ ULONG64 KernelTime;
+ ULONG64 UserTime;
+ ULONG64 StartAddress;
+ ULONG64 Affinity;
+} MINIDUMP_THREAD_INFO, *PMINIDUMP_THREAD_INFO;
+
+typedef struct _MINIDUMP_THREAD_INFO_LIST
+{
+ ULONG SizeOfHeader;
+ ULONG SizeOfEntry;
+ ULONG NumberOfEntries;
+} MINIDUMP_THREAD_INFO_LIST, *PMINIDUMP_THREAD_INFO_LIST;
+
typedef enum _MINIDUMP_STREAM_TYPE
{
UnusedStream = 0,
diff --git a/tools/winedump/minidump.c b/tools/winedump/minidump.c
index f8bd03ca0c5..734c754e6be 100644
--- a/tools/winedump/minidump.c
+++ b/tools/winedump/minidump.c
@@ -476,6 +476,37 @@ void mdmp_dump(void)
}
}
break;
+ case ThreadInfoListStream:
+ {
+ const MINIDUMP_THREAD_INFO_LIST *til = stream;
+ const BYTE *desc;
+
+ printf("Thread Info List:\n");
+ printf(" SizeOfHeader: %u\n", (UINT)til->SizeOfHeader);
+ printf(" SizeOfEntry: %u\n", (UINT)til->SizeOfEntry);
+ printf(" NumberOfEntries: %u\n", (UINT)til->NumberOfEntries);
+
+ desc = (BYTE *)til + sizeof(*til);
+ for (i = 0; i < til->NumberOfEntries; ++i)
+ {
+ const MINIDUMP_THREAD_INFO *ti = (void *)desc;
+
+ printf(" Thread [%u]:\n", i);
+ printf(" ThreadId: %u\n", ti->ThreadId);
+ printf(" DumpFlags: %#x\n", ti->DumpFlags);
+ printf(" DumpError: %u\n", ti->DumpError);
+ printf(" ExitStatus: %u\n", ti->ExitStatus);
+ print_longlong(" CreateTime", ti->CreateTime);
+ print_longlong(" ExitTime", ti->ExitTime);
+ print_longlong(" KernelTime", ti->KernelTime);
+ print_longlong(" UserTime", ti->UserTime);
+ print_longlong(" StartAddress", ti->StartAddress);
+ print_longlong(" Affinity", ti->Affinity);
+
+ desc += til->SizeOfEntry;
+ }
+ }
+ break;
default:
printf("NIY %d\n", dir->StreamType);
More information about the wine-cvs
mailing list