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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Crashpad Authors. All rights reserved. 1 // Copyright 2015 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 typename Traits::Pointer SystemDefaultActivationContextData; 274 typename Traits::Pointer SystemDefaultActivationContextData;
275 typename Traits::Pointer SystemAssemblyStorageMap; 275 typename Traits::Pointer SystemAssemblyStorageMap;
276 typename Traits::UnsignedIntegral MinimumStackCommit; 276 typename Traits::UnsignedIntegral MinimumStackCommit;
277 typename Traits::Pointer FlsCallback; 277 typename Traits::Pointer FlsCallback;
278 LIST_ENTRY<Traits> FlsListHead; 278 LIST_ENTRY<Traits> FlsListHead;
279 typename Traits::Pointer FlsBitmap; 279 typename Traits::Pointer FlsBitmap;
280 DWORD FlsBitmapBits[4]; 280 DWORD FlsBitmapBits[4];
281 DWORD FlsHighIndex; 281 DWORD FlsHighIndex;
282 }; 282 };
283 283
284 template <class Traits>
285 struct NT_TIB {
286 typename Traits::Pointer ExceptionList;
287 typename Traits::Pointer StackBase;
288 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
289 typename Traits::Pointer SubSystemTib;
290 union {
291 typename Traits::Pointer FiberData;
292 BYTE Version[4];
293 };
294 typename Traits::Pointer ArbitraryUserPointer;
295 typename Traits::Pointer Self;
296 };
297
298 template <class Traits>
299 struct CLIENT_ID {
300 typename Traits::Pointer UniqueProcess;
301 typename Traits::Pointer UniqueThread;
302 };
303
304 template <class Traits>
305 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.
306 LARGE_INTEGER KernelTime;
307 LARGE_INTEGER UserTime;
308 LARGE_INTEGER CreateTime;
309 union {
310 DWORD WaitTime;
311 typename Traits::Pad padding_for_x64_0;
312 };
313 typename Traits::Pointer StartAddress;
314 CLIENT_ID<Traits> ClientId;
315 LONG Priority;
316 LONG BasePriority;
317 ULONG ContextSwitches;
318 ULONG ThreadState;
319 union {
320 ULONG WaitReason;
321 typename Traits::Pad padding_for_x64_1;
322 };
323 typename Traits::Pointer StackBase; // These don't appear to be correct.
324 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.
325 typename Traits::Pointer Win32StartAddress;
326 typename Traits::Pointer TebBase;
327 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
328 typename Traits::Pointer Reserved2;
329 typename Traits::Pointer Reserved3;
330 };
331
332 // See http://undocumented.ntinternals.net/source/usermode/undocumented%20functi ons/system%20information/structures/system_process_information.html
333 template <class Traits>
334 struct SYSTEM_PROCESS_INFORMATION {
335 ULONG NextEntryOffset;
336 ULONG NumberOfThreads;
337 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
338 LARGE_INTEGER CreateTime;
339 LARGE_INTEGER UserTime;
340 LARGE_INTEGER KernelTime;
341 UNICODE_STRING<Traits> ImageName;
342 union {
343 LONG BasePriority;
344 typename Traits::Pad padding_for_x64_0;
345 };
346 union {
347 DWORD UniqueProcessId;
348 typename Traits::Pad padding_for_x64_1;
349 };
350 union {
351 DWORD InheritedFromUniqueProcessId;
352 typename Traits::Pad padding_for_x64_2;
353 };
354 ULONG HandleCount;
355 ULONG Reserved2[3];
356 SIZE_T PeakVirtualSize;
357 SIZE_T VirtualSize;
358 union {
359 ULONG PageFaultCount;
360 typename Traits::Pad padding_for_x64_3;
361 };
362 SIZE_T PeakWorkingSetSize;
363 SIZE_T WorkingSetSize;
364 SIZE_T QuotaPeakPagedPoolUsage;
365 SIZE_T QuotaPagedPoolUsage;
366 SIZE_T QuotaPeakNonPagedPoolUsage;
367 SIZE_T QuotaNonPagedPoolUsage;
368 SIZE_T PagefileUsage;
369 SIZE_T PeakPagefileUsage;
370 SIZE_T PrivatePageCount;
371 LARGE_INTEGER ReadOperationCount;
372 LARGE_INTEGER WriteOperationCount;
373 LARGE_INTEGER OtherOperationCount;
374 LARGE_INTEGER ReadTransferCount;
375 LARGE_INTEGER WriteTransferCount;
376 LARGE_INTEGER OtherTransferCount;
377 SYSTEM_EXTENDED_THREAD_INFORMATION<Traits> Threads[1];
378 };
379
284 #pragma pack(pop) 380 #pragma pack(pop)
285 381
286 //! \} 382 //! \}
287 383
288 } // namespace process_types 384 } // namespace process_types
289 } // namespace crashpad 385 } // namespace crashpad
290 386
291 #endif // CRASHPAD_UTIL_WIN_PROCESS_STRUCTS_H_ 387 #endif // CRASHPAD_UTIL_WIN_PROCESS_STRUCTS_H_
OLDNEW
« 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