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