From dd52ea21b5b4db57ffe44f61429d53b9522741bb Mon Sep 17 00:00:00 2001 From: wj32 Date: Mon, 10 Jan 2011 00:31:30 +0000 Subject: [PATCH] added display of standby repurposed pages git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3992 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- 2.x/trunk/CHANGELOG.txt | 3 +- 2.x/trunk/phlib/include/ntexapi.h | 17 +++---- 2.x/trunk/phlib/include/ntpsapi.h | 6 +-- 2.x/trunk/plugins/ExtendedTools/CHANGELOG.txt | 1 + .../plugins/ExtendedTools/ExtendedTools.rc | 48 +++++++++++-------- 2.x/trunk/plugins/ExtendedTools/memlists.c | 23 +++++++++ 2.x/trunk/plugins/ExtendedTools/resource.h | 12 ++++- 7 files changed, 78 insertions(+), 32 deletions(-) diff --git a/2.x/trunk/CHANGELOG.txt b/2.x/trunk/CHANGELOG.txt index 9f327afdc..88cb873c6 100644 --- a/2.x/trunk/CHANGELOG.txt +++ b/2.x/trunk/CHANGELOG.txt @@ -2,7 +2,8 @@ Process Hacker 2.11 * NEW/IMPROVED: - * Added WS Watch to ExtendedTools plugin + * Added WS Watch and other features to ExtendedTools + plugin 2.10 * NEW/IMPROVED: diff --git a/2.x/trunk/phlib/include/ntexapi.h b/2.x/trunk/phlib/include/ntexapi.h index 80d74af05..4826e3e4c 100644 --- a/2.x/trunk/phlib/include/ntexapi.h +++ b/2.x/trunk/phlib/include/ntexapi.h @@ -998,13 +998,14 @@ typedef struct _SYSTEM_THREAD_INFORMATION typedef struct _TEB *PTEB; +// private typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION { SYSTEM_THREAD_INFORMATION ThreadInfo; PVOID StackBase; PVOID StackLimit; PVOID Win32StartAddress; - PTEB TebBaseAddress; /* Windows 7 and above */ + PTEB TebBase; ULONG_PTR Reserved2; ULONG_PTR Reserved3; ULONG_PTR Reserved4; @@ -1433,13 +1434,13 @@ typedef struct _SYSTEM_SESSION_MAPPED_VIEW_INFORMATION // private typedef struct _SYSTEM_MEMORY_LIST_INFORMATION { - ULONG ZeroPageCount; - ULONG FreePageCount; - ULONG ModifiedPageCount; - ULONG ModifiedNoWritePageCount; - ULONG BadPageCount; - ULONG PageCountByPriority[8]; - ULONG RepurposedPagesByPriority[8]; + ULONG_PTR ZeroPageCount; + ULONG_PTR FreePageCount; + ULONG_PTR ModifiedPageCount; + ULONG_PTR ModifiedNoWritePageCount; + ULONG_PTR BadPageCount; + ULONG_PTR PageCountByPriority[8]; + ULONG_PTR RepurposedPagesByPriority[8]; } SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION; // private diff --git a/2.x/trunk/phlib/include/ntpsapi.h b/2.x/trunk/phlib/include/ntpsapi.h index f8fd6c6d2..d9f67d2c5 100644 --- a/2.x/trunk/phlib/include/ntpsapi.h +++ b/2.x/trunk/phlib/include/ntpsapi.h @@ -945,19 +945,19 @@ typedef struct _PS_CREATE_INFO }; ACCESS_MASK AdditionalFileAccess; } InitState; - + // PsCreateFailOnSectionCreate struct { HANDLE FileHandle; } FailSection; - + // PsCreateFailExeName struct { HANDLE IFEOKey; } ExeName; - + // PsCreateSuccess struct { diff --git a/2.x/trunk/plugins/ExtendedTools/CHANGELOG.txt b/2.x/trunk/plugins/ExtendedTools/CHANGELOG.txt index 69ab68fcc..8eda36076 100644 --- a/2.x/trunk/plugins/ExtendedTools/CHANGELOG.txt +++ b/2.x/trunk/plugins/ExtendedTools/CHANGELOG.txt @@ -1,5 +1,6 @@ 1.2 * Added WS Watch + * Added display of standby repurposed pages 1.1 * Fixed ETW crash diff --git a/2.x/trunk/plugins/ExtendedTools/ExtendedTools.rc b/2.x/trunk/plugins/ExtendedTools/ExtendedTools.rc index 4b168edf9..8e0d222ba 100644 --- a/2.x/trunk/plugins/ExtendedTools/ExtendedTools.rc +++ b/2.x/trunk/plugins/ExtendedTools/ExtendedTools.rc @@ -127,41 +127,51 @@ BEGIN LTEXT "Static",IDC_MESSAGE,7,7,262,8 END -IDD_MEMLISTS DIALOGEX 0, 0, 139, 186 +IDD_MEMLISTS DIALOGEX 0, 0, 228, 186 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOPMOST CAPTION "Memory Lists" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Close",IDOK,82,165,50,14 + DEFPUSHBUTTON "Close",IDOK,171,165,50,14 LTEXT "Zeroed",IDC_STATIC,7,7,24,8 - LTEXT "Free",IDC_STATIC,7,18,16,8 - LTEXT "Modified",IDC_STATIC,7,29,28,8 - LTEXT "Modified no-write",IDC_STATIC,7,40,56,8 - LTEXT "Bad",IDC_STATIC,7,51,13,8 + LTEXT "Free",IDC_STATIC,7,17,16,8 + LTEXT "Modified",IDC_STATIC,7,28,28,8 + LTEXT "Modified no-write",IDC_STATIC,7,39,56,8 + LTEXT "Bad",IDC_STATIC,7,50,13,8 LTEXT "Standby",IDC_STATIC,7,62,28,8 - LTEXT "Priority 0",IDC_STATIC,23,74,30,8 - LTEXT "Priority 1",IDC_STATIC,23,85,30,8 - LTEXT "Priority 2",IDC_STATIC,23,96,30,8 - LTEXT "Priority 3",IDC_STATIC,23,107,30,8 + LTEXT "Priority 0",IDC_STATIC,23,73,30,8 + LTEXT "Priority 1",IDC_STATIC,23,84,30,8 + LTEXT "Priority 2",IDC_STATIC,23,95,30,8 + LTEXT "Priority 3",IDC_STATIC,23,106,30,8 LTEXT "Priority 4",IDC_STATIC,23,118,30,8 LTEXT "Priority 5",IDC_STATIC,23,129,30,8 LTEXT "Priority 6",IDC_STATIC,23,140,30,8 LTEXT "Priority 7",IDC_STATIC,23,151,30,8 RTEXT "Static",IDC_ZZEROED_V,73,7,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZFREE_V,73,18,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZMODIFIED_V,73,29,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZMODIFIEDNOWRITE_V,73,40,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZBAD_V,73,51,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZFREE_V,73,17,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZMODIFIED_V,73,28,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZMODIFIEDNOWRITE_V,73,39,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZBAD_V,73,50,59,8,SS_ENDELLIPSIS RTEXT "Static",IDC_ZSTANDBY_V,73,62,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZSTANDBY0_V,73,74,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZSTANDBY1_V,73,85,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZSTANDBY2_V,73,96,59,8,SS_ENDELLIPSIS - RTEXT "Static",IDC_ZSTANDBY3_V,73,107,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZSTANDBY0_V,73,73,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZSTANDBY1_V,73,84,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZSTANDBY2_V,73,95,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZSTANDBY3_V,73,106,59,8,SS_ENDELLIPSIS RTEXT "Static",IDC_ZSTANDBY4_V,73,118,59,8,SS_ENDELLIPSIS RTEXT "Static",IDC_ZSTANDBY5_V,73,129,59,8,SS_ENDELLIPSIS RTEXT "Static",IDC_ZSTANDBY6_V,73,140,59,8,SS_ENDELLIPSIS RTEXT "Static",IDC_ZSTANDBY7_V,73,151,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED_V,162,62,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED0_V,162,74,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED1_V,162,85,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED2_V,162,96,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED3_V,162,107,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED4_V,162,118,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED5_V,162,129,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED6_V,162,140,59,8,SS_ENDELLIPSIS + RTEXT "Static",IDC_ZREPURPOSED7_V,162,151,59,8,SS_ENDELLIPSIS + RTEXT "(Repurposed)",IDC_STATIC,162,50,59,8 END IDD_PROCDISKNET DIALOGEX 0, 0, 260, 260 @@ -301,7 +311,7 @@ BEGIN IDD_MEMLISTS, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 132 + RIGHTMARGIN, 221 TOPMARGIN, 7 BOTTOMMARGIN, 179 END diff --git a/2.x/trunk/plugins/ExtendedTools/memlists.c b/2.x/trunk/plugins/ExtendedTools/memlists.c index 8dac2f4df..8cfc4ac46 100644 --- a/2.x/trunk/plugins/ExtendedTools/memlists.c +++ b/2.x/trunk/plugins/ExtendedTools/memlists.c @@ -77,12 +77,17 @@ static VOID EtpUpdateMemoryListInfo( ))) { ULONG_PTR standbyPageCount; + ULONG_PTR repurposedPageCount; ULONG i; standbyPageCount = 0; + repurposedPageCount = 0; for (i = 0; i < 8; i++) + { standbyPageCount += memoryListInfo.PageCountByPriority[i]; + repurposedPageCount += memoryListInfo.RepurposedPagesByPriority[i]; + } SetDlgItemText(hwndDlg, IDC_ZZEROED_V, PhaFormatSize((ULONG64)memoryListInfo.ZeroPageCount * PAGE_SIZE, -1)->Buffer); SetDlgItemText(hwndDlg, IDC_ZFREE_V, PhaFormatSize((ULONG64)memoryListInfo.FreePageCount * PAGE_SIZE, -1)->Buffer); @@ -98,6 +103,15 @@ static VOID EtpUpdateMemoryListInfo( SetDlgItemText(hwndDlg, IDC_ZSTANDBY5_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[5] * PAGE_SIZE, -1)->Buffer); SetDlgItemText(hwndDlg, IDC_ZSTANDBY6_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[6] * PAGE_SIZE, -1)->Buffer); SetDlgItemText(hwndDlg, IDC_ZSTANDBY7_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[7] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED_V, PhaFormatSize((ULONG64)repurposedPageCount * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED0_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[0] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED1_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[1] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED2_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[2] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED3_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[3] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED4_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[4] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED5_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[5] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED6_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[6] * PAGE_SIZE, -1)->Buffer); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED7_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[7] * PAGE_SIZE, -1)->Buffer); } else { @@ -115,6 +129,15 @@ static VOID EtpUpdateMemoryListInfo( SetDlgItemText(hwndDlg, IDC_ZSTANDBY5_V, L"Unknown"); SetDlgItemText(hwndDlg, IDC_ZSTANDBY6_V, L"Unknown"); SetDlgItemText(hwndDlg, IDC_ZSTANDBY7_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED0_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED1_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED2_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED3_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED4_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED5_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED6_V, L"Unknown"); + SetDlgItemText(hwndDlg, IDC_ZREPURPOSED7_V, L"Unknown"); } } diff --git a/2.x/trunk/plugins/ExtendedTools/resource.h b/2.x/trunk/plugins/ExtendedTools/resource.h index 34d0b75b0..2aea94af1 100644 --- a/2.x/trunk/plugins/ExtendedTools/resource.h +++ b/2.x/trunk/plugins/ExtendedTools/resource.h @@ -62,6 +62,16 @@ #define IDC_ENABLEETWMONITOR 1038 #define IDC_ENABLE 1039 #define IDC_WSWATCHENABLED 1041 +#define IDC_ZREPURPOSED_V 1042 +#define IDC_ZREPURPOSED0_V 1043 +#define IDC_ZREPURPOSED1_V 1044 +#define IDC_ZREPURPOSED2_V 1045 +#define IDC_ZREPURPOSED3_V 1046 +#define IDC_ZREPURPOSED4_V 1047 +#define IDC_ZREPURPOSED5_V 1048 +#define IDC_ZREPURPOSED6_V 1049 +#define IDC_ZSTDREP7_V 1050 +#define IDC_ZREPURPOSED7_V 1050 // Next default values for new objects // @@ -69,7 +79,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 111 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1042 +#define _APS_NEXT_CONTROL_VALUE 1051 #define _APS_NEXT_SYMED_VALUE 109 #endif #endif