Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1190)

Unified Diff: util/win/process_structs.h

Issue 1131473005: win: Add thread snapshot and memory snapshot for stacks (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: . Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« snapshot/win/process_reader_win.cc ('K') | « snapshot/win/thread_snapshot_win.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/win/process_structs.h
diff --git a/util/win/process_structs.h b/util/win/process_structs.h
index ece6089601ce08d4afa3af9057e46d3a32b47e2b..750c698f78026b359182b122cf39fa66471189f2 100644
--- a/util/win/process_structs.h
+++ b/util/win/process_structs.h
@@ -281,6 +281,102 @@ struct PEB {
DWORD FlsHighIndex;
};
+template <class Traits>
+struct NT_TIB {
+ typename Traits::Pointer ExceptionList;
+ typename Traits::Pointer StackBase;
+ typename Traits::Pointer StackLimit;
Mark Mentovai 2015/05/08 16:54:21 This is a size, so it’s more of an UnsignedIntegra
scottmg 2015/05/08 18:24:02 No, they're start/end pointers. Size is calculated
+ typename Traits::Pointer SubSystemTib;
+ union {
+ typename Traits::Pointer FiberData;
+ BYTE Version[4];
+ };
+ typename Traits::Pointer ArbitraryUserPointer;
+ typename Traits::Pointer Self;
+};
+
+template <class Traits>
+struct CLIENT_ID {
+ typename Traits::Pointer UniqueProcess;
+ typename Traits::Pointer UniqueThread;
+};
+
+template <class Traits>
+struct SYSTEM_EXTENDED_THREAD_INFORMATION{
Mark Mentovai 2015/05/08 16:54:21 Put a space before the {.
Mark Mentovai 2015/05/08 16:54:21 I don’t see this in the SDK. If there’s a good ref
scottmg 2015/05/08 18:24:02 Done.
scottmg 2015/05/08 18:24:02 Done.
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER CreateTime;
+ union {
+ DWORD WaitTime;
+ typename Traits::Pad padding_for_x64_0;
+ };
+ typename Traits::Pointer StartAddress;
+ CLIENT_ID<Traits> ClientId;
+ LONG Priority;
+ LONG BasePriority;
+ ULONG ContextSwitches;
+ ULONG ThreadState;
+ union {
+ ULONG WaitReason;
+ typename Traits::Pad padding_for_x64_1;
+ };
+ typename Traits::Pointer StackBase; // These don't appear to be correct.
+ typename Traits::Pointer StackLimit;
Mark Mentovai 2015/05/08 16:54:20 This would be an UnsignedIntegral too.
scottmg 2015/05/08 18:24:02 See above.
+ typename Traits::Pointer Win32StartAddress;
+ typename Traits::Pointer TebBase;
+ typename Traits::Pointer Reserved;
Mark Mentovai 2015/05/08 16:54:21 No suspend count hiding out in any of these?
scottmg 2015/05/08 18:24:02 They seem to be all 0 most of the time unfortunate
+ typename Traits::Pointer Reserved2;
+ typename Traits::Pointer Reserved3;
+};
+
+// See http://undocumented.ntinternals.net/source/usermode/undocumented%20functions/system%20information/structures/system_process_information.html
+template <class Traits>
+struct SYSTEM_PROCESS_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG NumberOfThreads;
+ LARGE_INTEGER Reserved[3];
Mark Mentovai 2015/05/08 16:54:21 Some of the ntexapi.h things I found explain the r
scottmg 2015/05/08 18:24:02 It seems like they were unused on older OSs, and h
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER KernelTime;
+ UNICODE_STRING<Traits> ImageName;
+ union {
+ LONG BasePriority;
+ typename Traits::Pad padding_for_x64_0;
+ };
+ union {
+ DWORD UniqueProcessId;
+ typename Traits::Pad padding_for_x64_1;
+ };
+ union {
+ DWORD InheritedFromUniqueProcessId;
+ typename Traits::Pad padding_for_x64_2;
+ };
+ ULONG HandleCount;
+ ULONG Reserved2[3];
+ SIZE_T PeakVirtualSize;
+ SIZE_T VirtualSize;
+ union {
+ ULONG PageFaultCount;
+ typename Traits::Pad padding_for_x64_3;
+ };
+ SIZE_T PeakWorkingSetSize;
+ SIZE_T WorkingSetSize;
+ SIZE_T QuotaPeakPagedPoolUsage;
+ SIZE_T QuotaPagedPoolUsage;
+ SIZE_T QuotaPeakNonPagedPoolUsage;
+ SIZE_T QuotaNonPagedPoolUsage;
+ SIZE_T PagefileUsage;
+ SIZE_T PeakPagefileUsage;
+ SIZE_T PrivatePageCount;
+ LARGE_INTEGER ReadOperationCount;
+ LARGE_INTEGER WriteOperationCount;
+ LARGE_INTEGER OtherOperationCount;
+ LARGE_INTEGER ReadTransferCount;
+ LARGE_INTEGER WriteTransferCount;
+ LARGE_INTEGER OtherTransferCount;
+ SYSTEM_EXTENDED_THREAD_INFORMATION<Traits> Threads[1];
+};
+
#pragma pack(pop)
//! \}
« snapshot/win/process_reader_win.cc ('K') | « snapshot/win/thread_snapshot_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698