mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
* moved Memory Lists from ExtendedTools to main program
* ExtendedTools: added Disk and Network sections git-svn-id: svn://svn.code.sf.net/p/processhacker/code@4837 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
@@ -444,6 +444,17 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
IDR_EMPTYMEMLISTS MENU
|
||||
BEGIN
|
||||
POPUP "Empty"
|
||||
BEGIN
|
||||
MENUITEM "Empty Working Sets", ID_EMPTY_EMPTYWORKINGSETS
|
||||
MENUITEM "Empty Modified Page List", ID_EMPTY_EMPTYMODIFIEDPAGELIST
|
||||
MENUITEM "Empty Standby List", ID_EMPTY_EMPTYSTANDBYLIST
|
||||
MENUITEM "Empty Priority 0 Standby List", ID_EMPTY_EMPTYPRIORITY0STANDBYLIST
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -1517,7 +1528,7 @@ BEGIN
|
||||
RTEXT "Static",IDC_ZTHREADS_V,45,38,46,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZHANDLES_V,45,48,46,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZUPTIME_V,46,58,45,8,SS_ENDELLIPSIS
|
||||
CONTROL "Show one graph per CPU",IDC_ONEGRAPHPERCPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,76,96,10
|
||||
CONTROL "&Show one graph per CPU",IDC_ONEGRAPHPERCPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,76,96,10
|
||||
GROUPBOX "CPU",IDC_STATIC,101,17,136,55
|
||||
LTEXT "Context Switches Delta",IDC_STATIC,109,28,76,8
|
||||
LTEXT "Interrupts Delta",IDC_STATIC,109,38,52,8
|
||||
@@ -1531,6 +1542,7 @@ END
|
||||
|
||||
IDD_SYSINFO_MEMPANEL DIALOGEX 0, 0, 358, 171
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
|
||||
EXSTYLE WS_EX_CONTROLPARENT
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Commit Charge",IDC_STATIC,0,0,108,44
|
||||
@@ -1571,7 +1583,7 @@ BEGIN
|
||||
LTEXT "Limit",IDC_STATIC,7,135,15,8
|
||||
LTEXT "Frees Delta",IDC_STATIC,7,155,38,8
|
||||
RTEXT "Static",IDC_ZNONPAGEDFREESDELTA_V,56,155,45,8,SS_ENDELLIPSIS
|
||||
GROUPBOX "Memory Lists",IDC_STATIC,234,0,123,154
|
||||
GROUPBOX "Memory Lists",IDC_STATIC,234,0,123,169
|
||||
LTEXT "Zeroed",IDC_STATIC,242,11,24,8
|
||||
LTEXT "Modified",IDC_STATIC,242,31,28,8
|
||||
RTEXT "Static",IDC_ZLISTZEROED_V,304,11,47,8,SS_ENDELLIPSIS
|
||||
@@ -1609,10 +1621,12 @@ BEGIN
|
||||
RTEXT "Static",IDC_ZPAGINGMAPPEDWRITESDELTA_V,191,108,31,8,SS_ENDELLIPSIS
|
||||
LTEXT "Modified pagefile",IDC_STATIC,242,51,55,8
|
||||
RTEXT "Static",IDC_ZLISTMODIFIEDPAGEFILE_V,303,51,48,8,SS_ENDELLIPSIS
|
||||
PUSHBUTTON "&More",IDC_MORE,242,152,50,14
|
||||
END
|
||||
|
||||
IDD_SYSINFO_MEM DIALOGEX 0, 0, 316, 250
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_CONTROLPARENT
|
||||
CAPTION "Memory"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
@@ -1653,6 +1667,56 @@ BEGIN
|
||||
RTEXT "Static",IDC_ZOTHERBYTESDELTA_V,81,61,45,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
IDD_MEMLISTS DIALOGEX 0, 0, 228, 195
|
||||
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,171,174,50,14
|
||||
LTEXT "Zeroed",IDC_STATIC,7,7,24,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,60,13,8
|
||||
LTEXT "Standby",IDC_STATIC,7,72,28,8
|
||||
LTEXT "Priority 0",IDC_STATIC,23,83,30,8
|
||||
LTEXT "Priority 1",IDC_STATIC,23,94,30,8
|
||||
LTEXT "Priority 2",IDC_STATIC,23,105,30,8
|
||||
LTEXT "Priority 3",IDC_STATIC,23,116,30,8
|
||||
LTEXT "Priority 4",IDC_STATIC,23,128,30,8
|
||||
LTEXT "Priority 5",IDC_STATIC,23,139,30,8
|
||||
LTEXT "Priority 6",IDC_STATIC,23,150,30,8
|
||||
LTEXT "Priority 7",IDC_STATIC,23,161,30,8
|
||||
RTEXT "Static",IDC_ZLISTZEROED_V,73,7,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTFREE_V,73,17,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTMODIFIED_V,73,28,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTMODIFIEDNOWRITE_V,73,39,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTBAD_V,73,60,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY_V,73,72,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY0_V,73,83,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY1_V,73,94,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY2_V,73,105,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY3_V,73,116,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY4_V,73,128,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY5_V,73,139,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY6_V,73,150,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTSTANDBY7_V,73,161,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED_V,162,72,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED0_V,162,84,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED1_V,162,95,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED2_V,162,106,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED3_V,162,117,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED4_V,162,128,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED5_V,162,139,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED6_V,162,150,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZLISTREPURPOSED7_V,162,161,59,8,SS_ENDELLIPSIS
|
||||
RTEXT "(Repurposed)",IDC_STATIC,162,60,59,8
|
||||
PUSHBUTTON "&Empty",IDC_EMPTY,117,174,50,14
|
||||
LTEXT "Modified pagefile",IDC_STATIC,7,49,55,8
|
||||
RTEXT "Static",IDC_ZLISTMODIFIEDPAGEFILE_V,73,49,59,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -2157,6 +2221,14 @@ BEGIN
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 74
|
||||
END
|
||||
|
||||
IDD_MEMLISTS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 221
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 188
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
@@ -276,6 +276,7 @@
|
||||
<ClCompile Include="mainwnd.c" />
|
||||
<ClCompile Include="mdump.c" />
|
||||
<ClCompile Include="memedit.c" />
|
||||
<ClCompile Include="memlists.c" />
|
||||
<ClCompile Include="memprot.c" />
|
||||
<ClCompile Include="memprv.c" />
|
||||
<ClCompile Include="memrslt.c" />
|
||||
|
||||
@@ -453,6 +453,9 @@
|
||||
<ClCompile Include="pcre\pcre_xclass.c">
|
||||
<Filter>PCRE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="memlists.c">
|
||||
<Filter>Process Hacker</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\phlib\circbuf_i.h">
|
||||
|
||||
@@ -1451,6 +1451,14 @@ VOID PhShowMemoryEditorDialog(
|
||||
__in ULONG SelectLength
|
||||
);
|
||||
|
||||
// memlists
|
||||
|
||||
VOID PhShowMemoryListsDialog(
|
||||
__in HWND ParentWindowHandle,
|
||||
__in_opt VOID (NTAPI *RegisterDialog)(HWND),
|
||||
__in_opt VOID (NTAPI *UnregisterDialog)(HWND)
|
||||
);
|
||||
|
||||
// memprot
|
||||
|
||||
VOID PhShowMemoryProtectDialog(
|
||||
|
||||
@@ -77,6 +77,14 @@ VOID PhSipOnUserMessage(
|
||||
|
||||
// Framework
|
||||
|
||||
VOID PhSipRegisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
VOID PhSipUnregisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
VOID PhSipInitializeParameters(
|
||||
VOID
|
||||
);
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
/*
|
||||
* Process Hacker -
|
||||
* memory list information
|
||||
*
|
||||
* Copyright (C) 2010-2011 wj32
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <phapp.h>
|
||||
|
||||
#define MSG_UPDATE (WM_APP + 1)
|
||||
|
||||
INT_PTR CALLBACK PhpMemoryListsDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
HWND PhMemoryListsWindowHandle = NULL;
|
||||
static VOID (NTAPI *UnregisterDialogFunction)(HWND);
|
||||
static PH_CALLBACK_REGISTRATION ProcessesUpdatedRegistration;
|
||||
|
||||
VOID PhShowMemoryListsDialog(
|
||||
__in HWND ParentWindowHandle,
|
||||
__in_opt VOID (NTAPI *RegisterDialog)(HWND),
|
||||
__in_opt VOID (NTAPI *UnregisterDialog)(HWND)
|
||||
)
|
||||
{
|
||||
if (!PhMemoryListsWindowHandle)
|
||||
{
|
||||
PhMemoryListsWindowHandle = CreateDialog(
|
||||
PhInstanceHandle,
|
||||
MAKEINTRESOURCE(IDD_MEMLISTS),
|
||||
ParentWindowHandle,
|
||||
PhpMemoryListsDlgProc
|
||||
);
|
||||
RegisterDialog(PhMemoryListsWindowHandle);
|
||||
UnregisterDialogFunction = UnregisterDialog;
|
||||
}
|
||||
|
||||
if (!IsWindowVisible(PhMemoryListsWindowHandle))
|
||||
ShowWindow(PhMemoryListsWindowHandle, SW_SHOW);
|
||||
else if (IsIconic(PhMemoryListsWindowHandle))
|
||||
ShowWindow(PhMemoryListsWindowHandle, SW_RESTORE);
|
||||
else
|
||||
SetForegroundWindow(PhMemoryListsWindowHandle);
|
||||
}
|
||||
|
||||
static VOID NTAPI ProcessesUpdatedCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
PostMessage(PhMemoryListsWindowHandle, MSG_UPDATE, 0, 0);
|
||||
}
|
||||
|
||||
static VOID PhpUpdateMemoryListInfo(
|
||||
__in HWND hwndDlg
|
||||
)
|
||||
{
|
||||
SYSTEM_MEMORY_LIST_INFORMATION memoryListInfo;
|
||||
|
||||
if (NT_SUCCESS(NtQuerySystemInformation(
|
||||
SystemMemoryListInformation,
|
||||
&memoryListInfo,
|
||||
sizeof(SYSTEM_MEMORY_LIST_INFORMATION),
|
||||
NULL
|
||||
)))
|
||||
{
|
||||
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_ZLISTZEROED_V, PhaFormatSize((ULONG64)memoryListInfo.ZeroPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTFREE_V, PhaFormatSize((ULONG64)memoryListInfo.FreePageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIED_V, PhaFormatSize((ULONG64)memoryListInfo.ModifiedPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIEDNOWRITE_V, PhaFormatSize((ULONG64)memoryListInfo.ModifiedNoWritePageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTBAD_V, PhaFormatSize((ULONG64)memoryListInfo.BadPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY_V, PhaFormatSize((ULONG64)standbyPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY0_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[0] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY1_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[1] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY2_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[2] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY3_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[3] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY4_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[4] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY5_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[5] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY6_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[6] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY7_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[7] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED_V, PhaFormatSize((ULONG64)repurposedPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED0_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[0] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED1_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[1] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED2_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[2] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED3_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[3] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED4_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[4] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED5_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[5] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED6_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[6] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED7_V, PhaFormatSize((ULONG64)memoryListInfo.RepurposedPagesByPriority[7] * PAGE_SIZE, -1)->Buffer);
|
||||
|
||||
if (WindowsVersion >= WINDOWS_8)
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIEDPAGEFILE_V, PhaFormatSize((ULONG64)memoryListInfo.ModifiedPageCountPageFile * PAGE_SIZE, -1)->Buffer);
|
||||
else
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIEDPAGEFILE_V, L"N/A");
|
||||
}
|
||||
else
|
||||
{
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTZEROED_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTFREE_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIED_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIEDNOWRITE_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTMODIFIEDPAGEFILE_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTBAD_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY0_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY1_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY2_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY3_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY4_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY5_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY6_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTSTANDBY7_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED0_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED1_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED2_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED3_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED4_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED5_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED6_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZLISTREPURPOSED7_V, L"Unknown");
|
||||
}
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK PhpMemoryListsDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
PhRegisterCallback(&PhProcessesUpdatedEvent, ProcessesUpdatedCallback, NULL, &ProcessesUpdatedRegistration);
|
||||
PhpUpdateMemoryListInfo(hwndDlg);
|
||||
|
||||
PhLoadWindowPlacementFromSetting(L"MemoryListsWindowPosition", NULL, hwndDlg);
|
||||
PhRegisterDialog(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
{
|
||||
PhUnregisterDialog(hwndDlg);
|
||||
PhSaveWindowPlacementToSetting(L"MemoryListsWindowPosition", NULL, hwndDlg);
|
||||
|
||||
PhUnregisterCallback(&PhProcessesUpdatedEvent, &ProcessesUpdatedRegistration);
|
||||
|
||||
UnregisterDialogFunction(hwndDlg);
|
||||
PhMemoryListsWindowHandle = NULL;
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDCANCEL:
|
||||
case IDOK:
|
||||
DestroyWindow(hwndDlg);
|
||||
break;
|
||||
case IDC_EMPTY:
|
||||
{
|
||||
HMENU menu;
|
||||
HMENU subMenu;
|
||||
RECT buttonRect;
|
||||
POINT point;
|
||||
UINT selectedItem;
|
||||
SYSTEM_MEMORY_LIST_COMMAND command = -1;
|
||||
|
||||
menu = LoadMenu(PhInstanceHandle, MAKEINTRESOURCE(IDR_EMPTYMEMLISTS));
|
||||
subMenu = GetSubMenu(menu, 0);
|
||||
|
||||
GetClientRect(GetDlgItem(hwndDlg, IDC_EMPTY), &buttonRect);
|
||||
point.x = 0;
|
||||
point.y = buttonRect.bottom;
|
||||
|
||||
ClientToScreen(GetDlgItem(hwndDlg, IDC_EMPTY), &point);
|
||||
selectedItem = PhShowContextMenu2(
|
||||
hwndDlg,
|
||||
GetDlgItem(hwndDlg, IDC_EMPTY),
|
||||
subMenu,
|
||||
point
|
||||
);
|
||||
|
||||
switch (selectedItem)
|
||||
{
|
||||
case ID_EMPTY_EMPTYWORKINGSETS:
|
||||
command = MemoryEmptyWorkingSets;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYMODIFIEDPAGELIST:
|
||||
command = MemoryFlushModifiedList;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYSTANDBYLIST:
|
||||
command = MemoryPurgeStandbyList;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYPRIORITY0STANDBYLIST:
|
||||
command = MemoryPurgeLowPriorityStandbyList;
|
||||
break;
|
||||
}
|
||||
|
||||
if (command != -1)
|
||||
{
|
||||
NTSTATUS status;
|
||||
PVOID returnedState;
|
||||
ULONG privilege = SE_PROF_SINGLE_PROCESS_PRIVILEGE;
|
||||
|
||||
if (NT_SUCCESS(status = RtlAcquirePrivilege(
|
||||
&privilege,
|
||||
1,
|
||||
0,
|
||||
&returnedState
|
||||
)))
|
||||
{
|
||||
status = NtSetSystemInformation(
|
||||
SystemMemoryListInformation,
|
||||
&command,
|
||||
sizeof(SYSTEM_MEMORY_LIST_COMMAND)
|
||||
);
|
||||
RtlReleasePrivilege(returnedState);
|
||||
}
|
||||
|
||||
if (status == STATUS_PRIVILEGE_NOT_HELD)
|
||||
{
|
||||
PhShowError(hwndDlg, L"Process Hacker must be elevated to execute this command.");
|
||||
}
|
||||
else if (!NT_SUCCESS(status))
|
||||
{
|
||||
PhShowStatus(hwndDlg, L"Unable to execute the memory list command", status, 0);
|
||||
}
|
||||
}
|
||||
|
||||
DestroyMenu(menu);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSG_UPDATE:
|
||||
{
|
||||
PhpUpdateMemoryListInfo(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -116,6 +116,9 @@
|
||||
#define IDD_SYSINFO_MEM 199
|
||||
#define IDD_SYSINFO_IO 200
|
||||
#define IDD_SYSINFO_IOPANEL 201
|
||||
#define IDD_MEMLISTS 202
|
||||
#define IDR_EMPTYMEMORYLISTS 203
|
||||
#define IDR_EMPTYMEMLISTS 204
|
||||
#define IDC_TERMINATE 1003
|
||||
#define IDC_FILEICON 1005
|
||||
#define IDC_FILE 1006
|
||||
@@ -215,6 +218,7 @@
|
||||
#define IDC_ADD 1079
|
||||
#define IDC_FONT 1079
|
||||
#define IDC_INTEGRITY 1079
|
||||
#define IDC_MORE 1079
|
||||
#define IDC_EDITDEP 1080
|
||||
#define IDC_VIEWPARENTPROCESS 1081
|
||||
#define IDC_OPENFILENAME 1082
|
||||
@@ -485,6 +489,17 @@
|
||||
#define IDC_ZLISTSTANDBY1_V 1347
|
||||
#define IDC_ZLISTSTANDBY2_V 1348
|
||||
#define IDC_ZLISTSTANDBY3_V 1349
|
||||
#define IDC_ZLISTBAD_V 1350
|
||||
#define IDC_ZLISTREPURPOSED_V 1351
|
||||
#define IDC_ZLISTREPURPOSED0_V 1352
|
||||
#define IDC_ZLISTREPURPOSED1_V 1353
|
||||
#define IDC_ZLISTREPURPOSED2_V 1354
|
||||
#define IDC_ZLISTREPURPOSED3_V 1355
|
||||
#define IDC_ZLISTREPURPOSED4_V 1356
|
||||
#define IDC_ZLISTREPURPOSED5_V 1357
|
||||
#define IDC_ZLISTREPURPOSED6_V 1358
|
||||
#define IDC_ZLISTREPURPOSED7_V 1359
|
||||
#define IDC_EMPTY 1360
|
||||
#define IDC_ZLISTSTANDBY4_V 1364
|
||||
#define IDC_ZLISTSTANDBY5_V 1365
|
||||
#define IDC_ZLISTSTANDBY6_V 1366
|
||||
@@ -714,6 +729,10 @@
|
||||
#define ID_MODULE_OPENFILELOCATION 40247
|
||||
#define ID_PROCESS_OPENFILELOCATION 40248
|
||||
#define ID_MISCELLANEOUS_REDUCEWORKINGSET 40249
|
||||
#define ID_EMPTY_EMPTYWORKINGSETS 40250
|
||||
#define ID_EMPTY_EMPTYMODIFIEDPAGELIST 40251
|
||||
#define ID_EMPTY_EMPTYSTANDBYLIST 40252
|
||||
#define ID_EMPTY_EMPTYPRIORITY0STANDBYLIST 40253
|
||||
#define IDC_BACK 40255
|
||||
#define IDDYNAMIC 50000
|
||||
#define IDPLUGINS 55000
|
||||
@@ -723,9 +742,9 @@
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 199
|
||||
#define _APS_NEXT_RESOURCE_VALUE 205
|
||||
#define _APS_NEXT_COMMAND_VALUE 40256
|
||||
#define _APS_NEXT_CONTROL_VALUE 1347
|
||||
#define _APS_NEXT_CONTROL_VALUE 1361
|
||||
#define _APS_NEXT_SYMED_VALUE 135
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -127,6 +127,7 @@ VOID PhSettingsInitialization(
|
||||
PhpAddIntegerPairSetting(L"MemResultsPosition", L"300,300");
|
||||
PhpAddIntegerPairSetting(L"MemResultsSize", L"500,520");
|
||||
PhpAddStringSetting(L"MemoryListViewColumns", L"");
|
||||
PhpAddIntegerPairSetting(L"MemoryListsWindowPosition", L"400,400");
|
||||
PhpAddStringSetting(L"MemoryReadWriteAddressChoices", L"");
|
||||
PhpAddStringSetting(L"ModuleTreeListColumns", L"");
|
||||
PhpAddStringSetting(L"ModuleTreeListSort", L"0,0"); // 0, NoSortOrder
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
static HANDLE PhSipThread = NULL;
|
||||
static HWND PhSipWindow = NULL;
|
||||
static PPH_LIST PhSipDialogList = NULL;
|
||||
static PH_EVENT InitializedEvent = PH_EVENT_INIT;
|
||||
static PH_LAYOUT_MANAGER WindowLayoutManager;
|
||||
static RECT MinimumSize;
|
||||
@@ -157,6 +158,20 @@ NTSTATUS PhSipSysInfoThreadStart(
|
||||
processed = TRUE;
|
||||
}
|
||||
|
||||
if (PhSipDialogList)
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
for (i = 0; i < PhSipDialogList->Count; i++)
|
||||
{
|
||||
if (IsDialogMessage((HWND)PhSipDialogList->Items[i], &message))
|
||||
{
|
||||
processed = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!processed)
|
||||
{
|
||||
if (!IsDialogMessage(PhSipWindow, &message))
|
||||
@@ -176,6 +191,12 @@ NTSTATUS PhSipSysInfoThreadStart(
|
||||
PhSipWindow = NULL;
|
||||
PhSipThread = NULL;
|
||||
|
||||
if (PhSipDialogList)
|
||||
{
|
||||
PhDereferenceObject(PhSipDialogList);
|
||||
PhSipDialogList = NULL;
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -264,8 +285,6 @@ VOID PhSipOnInitDialog(
|
||||
NULL,
|
||||
&ProcessesUpdatedRegistration
|
||||
);
|
||||
|
||||
PhLoadWindowPlacementFromSetting(L"SysInfoWindowPosition", L"SysInfoWindowSize", PhSipWindow);
|
||||
}
|
||||
|
||||
VOID PhSipOnDestroy(
|
||||
@@ -378,6 +397,8 @@ VOID PhSipOnShowWindow(
|
||||
GetSystemMetrics(SM_CYSIZEFRAME) * 2;
|
||||
}
|
||||
|
||||
PhLoadWindowPlacementFromSetting(L"SysInfoWindowPosition", L"SysInfoWindowSize", PhSipWindow);
|
||||
|
||||
AlwaysOnTop = (BOOLEAN)PhGetIntegerSetting(L"SysInfoWindowAlwaysOnTop");
|
||||
Button_SetCheck(GetDlgItem(PhSipWindow, IDC_ALWAYSONTOP), AlwaysOnTop ? BST_CHECKED : BST_UNCHECKED);
|
||||
PhSipSetAlwaysOnTop();
|
||||
@@ -637,6 +658,26 @@ VOID PhSiSetColorsGraphDrawInfo(
|
||||
DrawInfo->LineBackColor2 = PhMakeColorBrighter(Color2, 125);
|
||||
}
|
||||
|
||||
VOID PhSipRegisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
)
|
||||
{
|
||||
if (!PhSipDialogList)
|
||||
PhSipDialogList = PhCreateList(4);
|
||||
|
||||
PhAddItemList(PhSipDialogList, DialogWindowHandle);
|
||||
}
|
||||
|
||||
VOID PhSipUnregisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
)
|
||||
{
|
||||
ULONG index;
|
||||
|
||||
if ((index = PhFindItemList(PhSipDialogList, DialogWindowHandle)) != -1)
|
||||
PhRemoveItemList(PhSipDialogList, index);
|
||||
}
|
||||
|
||||
VOID PhSipInitializeParameters(
|
||||
VOID
|
||||
)
|
||||
@@ -662,10 +703,10 @@ VOID PhSipInitializeParameters(
|
||||
|
||||
hdc = GetDC(PhSipWindow);
|
||||
|
||||
logFont.lfHeight -= MulDiv(4, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
||||
logFont.lfHeight -= MulDiv(3, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
||||
CurrentParameters.MediumFont = CreateFontIndirect(&logFont);
|
||||
|
||||
logFont.lfHeight -= MulDiv(4, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
||||
logFont.lfHeight -= MulDiv(3, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
||||
CurrentParameters.LargeFont = CreateFontIndirect(&logFont);
|
||||
|
||||
CurrentParameters.GraphBackColor = RGB(0xef, 0xef, 0xef);
|
||||
@@ -2193,6 +2234,18 @@ INT_PTR CALLBACK PhSipMemoryPanelDialogProc(
|
||||
NOTHING;
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_MORE:
|
||||
{
|
||||
PhShowMemoryListsDialog(PhSipWindow, PhSipRegisterDialog, PhSipUnregisterDialog);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
@@ -51,8 +51,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,7,0,0
|
||||
PRODUCTVERSION 1,7,0,0
|
||||
FILEVERSION 1,8,0,0
|
||||
PRODUCTVERSION 1,8,0,0
|
||||
FILEFLAGSMASK 0x17L
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@@ -69,12 +69,12 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "CompanyName", "wj32"
|
||||
VALUE "FileDescription", "Extended Tools plugin for Process Hacker"
|
||||
VALUE "FileVersion", "1.7"
|
||||
VALUE "FileVersion", "1.8"
|
||||
VALUE "InternalName", "ExtendedTools"
|
||||
VALUE "LegalCopyright", "Licensed under the GNU GPL, v3."
|
||||
VALUE "OriginalFilename", "ExtendedTools.dll"
|
||||
VALUE "ProductName", "Extended Tools plugin for Process Hacker"
|
||||
VALUE "ProductVersion", "1.7"
|
||||
VALUE "ProductVersion", "1.8"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
@@ -208,39 +208,19 @@ BEGIN
|
||||
RTEXT "Static",IDC_ZSENDBYTESDELTA_V,205,74,38,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
IDD_SYSDISKNET DIALOGEX 0, 0, 361, 221
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Disk and Network"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Close",IDOK,304,200,50,14
|
||||
GROUPBOX "Disk I/O",IDC_GROUPDISK,7,7,347,53,0,WS_EX_TRANSPARENT
|
||||
GROUPBOX "Network I/O",IDC_GROUPNETWORK,7,62,347,53,0,WS_EX_TRANSPARENT
|
||||
CONTROL "Always on Top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,202,63,10
|
||||
END
|
||||
|
||||
IDD_SYSDISKNET_PANEL DIALOGEX 0, 0, 246, 58
|
||||
IDD_SYSINFO_DISKPANEL DIALOGEX 0, 0, 146, 58
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Disk I/O",IDC_STATIC,0,0,118,58
|
||||
LTEXT "Reads",IDC_STATIC,8,11,21,8
|
||||
LTEXT "Read Bytes",IDC_STATIC,8,22,38,8
|
||||
LTEXT "Writes",IDC_STATIC,8,33,22,8
|
||||
LTEXT "Write Bytes",IDC_STATIC,8,44,38,8
|
||||
RTEXT "Static",IDC_ZREADS_V,55,11,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZREADBYTES_V,71,22,38,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZWRITES_V,55,33,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZWRITEBYTES_V,71,44,38,8,SS_ENDELLIPSIS
|
||||
GROUPBOX "Network I/O",IDC_STATIC,122,0,124,58
|
||||
LTEXT "Receives",IDC_STATIC,130,11,30,8
|
||||
LTEXT "Receive Bytes",IDC_STATIC,130,23,46,8
|
||||
LTEXT "Sends",IDC_STATIC,130,34,20,8
|
||||
LTEXT "Send Bytes",IDC_STATIC,130,44,37,8
|
||||
RTEXT "Static",IDC_ZRECEIVES_V,182,11,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZRECEIVEBYTES_V,198,23,38,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZSENDS_V,182,34,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZSENDBYTES_V,198,44,38,8,SS_ENDELLIPSIS
|
||||
GROUPBOX "Disk I/O",IDC_STATIC,0,0,145,58
|
||||
LTEXT "Reads Delta",IDC_STATIC,8,11,40,8
|
||||
LTEXT "Read Bytes Delta",IDC_STATIC,8,22,56,8
|
||||
LTEXT "Writes Delta",IDC_STATIC,8,33,40,8
|
||||
LTEXT "Write Bytes Delta",IDC_STATIC,8,44,57,8
|
||||
RTEXT "Static",IDC_ZREADSDELTA_V,84,11,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZREADBYTESDELTA_V,78,22,60,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZWRITESDELTA_V,84,33,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZWRITEBYTESDELTA_V,82,44,56,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
IDD_OPTIONS DIALOGEX 0, 0, 215, 77
|
||||
@@ -337,6 +317,41 @@ BEGIN
|
||||
RTEXT "Static",IDC_ZTOTALNODES_V,205,40,38,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
IDD_SYSINFO_DISK DIALOGEX 0, 0, 315, 186
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Disk"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
LTEXT "Disk",IDC_TITLE,0,0,72,21
|
||||
LTEXT "Panel layout",IDC_LAYOUT,0,124,315,61,NOT WS_VISIBLE
|
||||
LTEXT "Graph layout",IDC_GRAPH_LAYOUT,0,22,315,99,NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_SYSINFO_NETPANEL DIALOGEX 0, 0, 145, 58
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Network I/O",IDC_STATIC,0,0,145,58
|
||||
LTEXT "Receives Delta",IDC_STATIC,8,11,48,8
|
||||
LTEXT "Receive Bytes Delta",IDC_STATIC,8,22,65,8
|
||||
LTEXT "Sends Delta",IDC_STATIC,8,33,39,8
|
||||
LTEXT "Send Bytes Delta",IDC_STATIC,8,44,56,8
|
||||
RTEXT "Static",IDC_ZRECEIVESDELTA_V,84,11,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZRECEIVEBYTESDELTA_V,78,22,60,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZSENDSDELTA_V,84,33,54,8,SS_ENDELLIPSIS
|
||||
RTEXT "Static",IDC_ZSENDBYTESDELTA_V,82,44,56,8,SS_ENDELLIPSIS
|
||||
END
|
||||
|
||||
IDD_SYSINFO_NET DIALOGEX 0, 0, 315, 186
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Network"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
LTEXT "Network",IDC_TITLE,0,0,72,21
|
||||
LTEXT "Panel layout",IDC_LAYOUT,0,124,315,61,NOT WS_VISIBLE
|
||||
LTEXT "Graph layout",IDC_GRAPH_LAYOUT,0,22,315,99,NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -394,15 +409,7 @@ BEGIN
|
||||
BOTTOMMARGIN, 253
|
||||
END
|
||||
|
||||
IDD_SYSDISKNET, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 354
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 214
|
||||
END
|
||||
|
||||
IDD_SYSDISKNET_PANEL, DIALOG
|
||||
IDD_SYSINFO_DISKPANEL, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
@@ -437,6 +444,18 @@ BEGIN
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 253
|
||||
END
|
||||
|
||||
IDD_SYSINFO_DISK, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
IDD_SYSINFO_NETPANEL, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
IDD_SYSINFO_NET, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
<ClCompile Include="etwprprp.c" />
|
||||
<ClCompile Include="etwsys.c" />
|
||||
<ClCompile Include="main.c" />
|
||||
<ClCompile Include="memlists.c" />
|
||||
<ClCompile Include="modsrv.c" />
|
||||
<ClCompile Include="objprp.c" />
|
||||
<ClCompile Include="options.c" />
|
||||
@@ -197,8 +196,10 @@
|
||||
<ClInclude Include="d3dkmt.h" />
|
||||
<ClInclude Include="disktabp.h" />
|
||||
<ClInclude Include="etwmon.h" />
|
||||
<ClInclude Include="etwsys.h" />
|
||||
<ClInclude Include="exttools.h" />
|
||||
<ClInclude Include="gpumon.h" />
|
||||
<ClInclude Include="gpusys.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -33,9 +33,6 @@
|
||||
<ClCompile Include="etwmon.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="memlists.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="etwstat.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -95,6 +92,12 @@
|
||||
<ClInclude Include="gpumon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="gpusys.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="etwsys.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CHANGELOG.txt" />
|
||||
|
||||
@@ -55,6 +55,11 @@ PH_UINT32_DELTA EtDiskWriteDelta;
|
||||
PH_UINT32_DELTA EtNetworkReceiveDelta;
|
||||
PH_UINT32_DELTA EtNetworkSendDelta;
|
||||
|
||||
PH_UINT32_DELTA EtDiskReadCountDelta;
|
||||
PH_UINT32_DELTA EtDiskWriteCountDelta;
|
||||
PH_UINT32_DELTA EtNetworkReceiveCountDelta;
|
||||
PH_UINT32_DELTA EtNetworkSendCountDelta;
|
||||
|
||||
PH_CIRCULAR_BUFFER_ULONG EtDiskReadHistory;
|
||||
PH_CIRCULAR_BUFFER_ULONG EtDiskWriteHistory;
|
||||
PH_CIRCULAR_BUFFER_ULONG EtNetworkReceiveHistory;
|
||||
@@ -237,6 +242,11 @@ static VOID NTAPI ProcessesUpdatedCallback(
|
||||
PhUpdateDelta(&EtNetworkReceiveDelta, EtpNetworkReceiveRaw);
|
||||
PhUpdateDelta(&EtNetworkSendDelta, EtpNetworkSendRaw);
|
||||
|
||||
PhUpdateDelta(&EtDiskReadCountDelta, EtDiskReadCount);
|
||||
PhUpdateDelta(&EtDiskWriteCountDelta, EtDiskWriteCount);
|
||||
PhUpdateDelta(&EtNetworkReceiveCountDelta, EtNetworkReceiveCount);
|
||||
PhUpdateDelta(&EtNetworkSendCountDelta, EtNetworkSendCount);
|
||||
|
||||
// Update per-process statistics.
|
||||
// Note: no lock is needed because we only ever modify the list on this same thread.
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,90 @@
|
||||
#ifndef ETWSYS_H
|
||||
#define ETWSYS_H
|
||||
|
||||
// Disk section
|
||||
|
||||
BOOLEAN EtpDiskSectionCallback(
|
||||
__in PPH_SYSINFO_SECTION Section,
|
||||
__in PH_SYSINFO_SECTION_MESSAGE Message,
|
||||
__in_opt PVOID Parameter1,
|
||||
__in_opt PVOID Parameter2
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpDiskDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpDiskPanelDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
VOID EtpNotifyDiskGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpUpdateDiskGraph(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUpdateDiskPanel(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_PROCESS_RECORD EtpReferenceMaxDiskRecord(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetMaxDiskString(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
// Network section
|
||||
|
||||
BOOLEAN EtpNetworkSectionCallback(
|
||||
__in PPH_SYSINFO_SECTION Section,
|
||||
__in PH_SYSINFO_SECTION_MESSAGE Message,
|
||||
__in_opt PVOID Parameter1,
|
||||
__in_opt PVOID Parameter2
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpNetworkDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpNetworkPanelDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
VOID EtpNotifyNetworkGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpUpdateNetworkGraph(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUpdateNetworkPanel(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_PROCESS_RECORD EtpReferenceMaxNetworkRecord(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetMaxNetworkString(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -15,13 +15,6 @@ extern HWND NetworkTreeNewHandle;
|
||||
#define SETTING_NAME_DISK_TREE_LIST_SORT (SETTING_PREFIX L"DiskTreeListSort")
|
||||
#define SETTING_NAME_ENABLE_ETW_MONITOR (SETTING_PREFIX L"EnableEtwMonitor")
|
||||
#define SETTING_NAME_ENABLE_GPU_MONITOR (SETTING_PREFIX L"EnableGpuMonitor")
|
||||
#define SETTING_NAME_ETWSYS_ALWAYS_ON_TOP (SETTING_PREFIX L"EtwSysAlwaysOnTop")
|
||||
#define SETTING_NAME_ETWSYS_WINDOW_POSITION (SETTING_PREFIX L"EtwSysWindowPosition")
|
||||
#define SETTING_NAME_ETWSYS_WINDOW_SIZE (SETTING_PREFIX L"EtwSysWindowSize")
|
||||
#define SETTING_NAME_GPUSYS_ALWAYS_ON_TOP (SETTING_PREFIX L"GpuSysAlwaysOnTop")
|
||||
#define SETTING_NAME_GPUSYS_WINDOW_POSITION (SETTING_PREFIX L"GpuSysWindowPosition")
|
||||
#define SETTING_NAME_GPUSYS_WINDOW_SIZE (SETTING_PREFIX L"GpuSysWindowSize")
|
||||
#define SETTING_NAME_MEMORY_LISTS_WINDOW_POSITION (SETTING_PREFIX L"MemoryListsWindowPosition")
|
||||
|
||||
// Process icon
|
||||
|
||||
@@ -265,6 +258,11 @@ extern PH_UINT32_DELTA EtDiskWriteDelta;
|
||||
extern PH_UINT32_DELTA EtNetworkReceiveDelta;
|
||||
extern PH_UINT32_DELTA EtNetworkSendDelta;
|
||||
|
||||
extern PH_UINT32_DELTA EtDiskReadCountDelta;
|
||||
extern PH_UINT32_DELTA EtDiskWriteCountDelta;
|
||||
extern PH_UINT32_DELTA EtNetworkReceiveCountDelta;
|
||||
extern PH_UINT32_DELTA EtNetworkSendCountDelta;
|
||||
|
||||
extern PH_CIRCULAR_BUFFER_ULONG EtDiskReadHistory;
|
||||
extern PH_CIRCULAR_BUFFER_ULONG EtDiskWriteHistory;
|
||||
extern PH_CIRCULAR_BUFFER_ULONG EtNetworkReceiveHistory;
|
||||
@@ -397,6 +395,14 @@ typedef struct _ET_PROCESS_GPU_STATISTICS
|
||||
ULONG64 ContextSwitches;
|
||||
} ET_PROCESS_GPU_STATISTICS, *PET_PROCESS_GPU_STATISTICS;
|
||||
|
||||
ULONG EtGetGpuAdapterCount(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_STRING EtGetGpuAdapterDescription(
|
||||
__in ULONG Index
|
||||
);
|
||||
|
||||
VOID EtQueryProcessGpuStatistics(
|
||||
__in HANDLE ProcessHandle,
|
||||
__out PET_PROCESS_GPU_STATISTICS Statistics
|
||||
@@ -432,8 +438,8 @@ ET_FIREWALL_STATUS EtQueryFirewallStatus(
|
||||
|
||||
// etwsys
|
||||
|
||||
VOID EtShowEtwSystemDialog(
|
||||
VOID
|
||||
VOID EtEtwSystemInformationInitializing(
|
||||
__in PPH_PLUGIN_SYSINFO_POINTERS Pointers
|
||||
);
|
||||
|
||||
// gpusys
|
||||
@@ -442,12 +448,6 @@ VOID EtGpuSystemInformationInitializing(
|
||||
__in PPH_PLUGIN_SYSINFO_POINTERS Pointers
|
||||
);
|
||||
|
||||
// memlists
|
||||
|
||||
VOID EtShowMemoryListsDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
// modsrv
|
||||
|
||||
VOID EtShowModuleServicesDialog(
|
||||
|
||||
@@ -34,6 +34,7 @@ static _SetupDiGetClassDevsW SetupDiGetClassDevsW_I;
|
||||
static _SetupDiDestroyDeviceInfoList SetupDiDestroyDeviceInfoList_I;
|
||||
static _SetupDiEnumDeviceInterfaces SetupDiEnumDeviceInterfaces_I;
|
||||
static _SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetailW_I;
|
||||
static _SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryPropertyW_I;
|
||||
|
||||
BOOLEAN EtGpuEnabled;
|
||||
static PPH_LIST EtpGpuAdapterList;
|
||||
@@ -80,6 +81,7 @@ VOID EtGpuMonitorInitialization(
|
||||
SetupDiDestroyDeviceInfoList_I = (PVOID)GetProcAddress(setupapiHandle, "SetupDiDestroyDeviceInfoList");
|
||||
SetupDiEnumDeviceInterfaces_I = (PVOID)GetProcAddress(setupapiHandle, "SetupDiEnumDeviceInterfaces");
|
||||
SetupDiGetDeviceInterfaceDetailW_I = (PVOID)GetProcAddress(setupapiHandle, "SetupDiGetDeviceInterfaceDetailW");
|
||||
SetupDiGetDeviceRegistryPropertyW_I = (PVOID)GetProcAddress(setupapiHandle, "SetupDiGetDeviceRegistryPropertyW");
|
||||
}
|
||||
|
||||
if (
|
||||
@@ -128,6 +130,7 @@ static BOOLEAN EtpInitializeD3DStatistics(
|
||||
ULONG memberIndex;
|
||||
SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
|
||||
PSP_DEVICE_INTERFACE_DETAIL_DATA detailData;
|
||||
SP_DEVINFO_DATA deviceInfoData;
|
||||
ULONG detailDataSize;
|
||||
D3DKMT_OPENADAPTERFROMDEVICENAME openAdapterFromDeviceName;
|
||||
D3DKMT_QUERYSTATISTICS queryStatistics;
|
||||
@@ -145,8 +148,9 @@ static BOOLEAN EtpInitializeD3DStatistics(
|
||||
detailDataSize = 0x100;
|
||||
detailData = PhAllocate(detailDataSize);
|
||||
detailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
|
||||
deviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
|
||||
|
||||
if (!(result = SetupDiGetDeviceInterfaceDetailW_I(deviceInfoSet, &deviceInterfaceData, detailData, detailDataSize, &detailDataSize, NULL)) &&
|
||||
if (!(result = SetupDiGetDeviceInterfaceDetailW_I(deviceInfoSet, &deviceInterfaceData, detailData, detailDataSize, &detailDataSize, &deviceInfoData)) &&
|
||||
GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
PhFree(detailData);
|
||||
@@ -155,7 +159,7 @@ static BOOLEAN EtpInitializeD3DStatistics(
|
||||
if (detailDataSize >= sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA))
|
||||
detailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
|
||||
|
||||
result = SetupDiGetDeviceInterfaceDetailW_I(deviceInfoSet, &deviceInterfaceData, detailData, detailDataSize, &detailDataSize, NULL);
|
||||
result = SetupDiGetDeviceInterfaceDetailW_I(deviceInfoSet, &deviceInterfaceData, detailData, detailDataSize, &detailDataSize, &deviceInfoData);
|
||||
}
|
||||
|
||||
if (result)
|
||||
@@ -175,6 +179,7 @@ static BOOLEAN EtpInitializeD3DStatistics(
|
||||
|
||||
gpuAdapter = PhAllocate(sizeof(ETP_GPU_ADAPTER));
|
||||
gpuAdapter->AdapterLuid = openAdapterFromDeviceName.AdapterLuid;
|
||||
gpuAdapter->Description = EtpQueryDeviceDescription(deviceInfoSet, &deviceInfoData);
|
||||
gpuAdapter->NodeCount = queryStatistics.QueryResult.AdapterInformation.NodeCount;
|
||||
gpuAdapter->SegmentCount = queryStatistics.QueryResult.AdapterInformation.NbSegments;
|
||||
gpuAdapter->ApertureBitMap = 0;
|
||||
@@ -232,6 +237,56 @@ static BOOLEAN EtpInitializeD3DStatistics(
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static PPH_STRING EtpQueryDeviceDescription(
|
||||
__in HDEVINFO DeviceInfoSet,
|
||||
__in PSP_DEVINFO_DATA DeviceInfoData
|
||||
)
|
||||
{
|
||||
LOGICAL result;
|
||||
PPH_STRING string;
|
||||
ULONG bufferSize;
|
||||
|
||||
if (!SetupDiGetDeviceRegistryPropertyW_I)
|
||||
return NULL;
|
||||
|
||||
bufferSize = 0x40;
|
||||
string = PhCreateStringEx(NULL, bufferSize);
|
||||
|
||||
if (!(result = SetupDiGetDeviceRegistryPropertyW_I(
|
||||
DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
SPDRP_DEVICEDESC,
|
||||
NULL,
|
||||
(PBYTE)string->Buffer,
|
||||
bufferSize,
|
||||
&bufferSize
|
||||
)) && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
PhDereferenceObject(string);
|
||||
string = PhCreateStringEx(NULL, bufferSize);
|
||||
|
||||
result = SetupDiGetDeviceRegistryPropertyW_I(
|
||||
DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
SPDRP_DEVICEDESC,
|
||||
NULL,
|
||||
(PBYTE)string->Buffer,
|
||||
bufferSize,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
if (!result)
|
||||
{
|
||||
PhDereferenceObject(string);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PhTrimToNullTerminatorString(string);
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
static VOID EtpUpdateSegmentInformation(
|
||||
__in_opt PET_PROCESS_BLOCK Block
|
||||
)
|
||||
@@ -467,6 +522,35 @@ static VOID NTAPI ProcessesUpdatedCallback(
|
||||
runCount++;
|
||||
}
|
||||
|
||||
ULONG EtGetGpuAdapterCount(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return EtpGpuAdapterList->Count;
|
||||
}
|
||||
|
||||
PPH_STRING EtGetGpuAdapterDescription(
|
||||
__in ULONG Index
|
||||
)
|
||||
{
|
||||
PPH_STRING description;
|
||||
|
||||
if (Index >= EtpGpuAdapterList->Count)
|
||||
return NULL;
|
||||
|
||||
description = ((PETP_GPU_ADAPTER)EtpGpuAdapterList->Items[Index])->Description;
|
||||
|
||||
if (description)
|
||||
{
|
||||
PhReferenceObject(description);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
VOID EtQueryProcessGpuStatistics(
|
||||
__in HANDLE ProcessHandle,
|
||||
__out PET_PROCESS_GPU_STATISTICS Statistics
|
||||
|
||||
@@ -31,11 +31,22 @@ typedef BOOL (WINAPI *_SetupDiGetDeviceInterfaceDetailW)(
|
||||
__out_opt PSP_DEVINFO_DATA DeviceInfoData
|
||||
);
|
||||
|
||||
typedef BOOL (WINAPI *_SetupDiGetDeviceRegistryPropertyW)(
|
||||
__in HDEVINFO DeviceInfoSet,
|
||||
__in PSP_DEVINFO_DATA DeviceInfoData,
|
||||
__in DWORD Property,
|
||||
__out_opt PDWORD PropertyRegDataType,
|
||||
__out_opt PBYTE PropertyBuffer,
|
||||
__in DWORD PropertyBufferSize,
|
||||
__out_opt PDWORD RequiredSize
|
||||
);
|
||||
|
||||
// Structures
|
||||
|
||||
typedef struct _ETP_GPU_ADAPTER
|
||||
{
|
||||
LUID AdapterLuid;
|
||||
PPH_STRING Description;
|
||||
ULONG SegmentCount;
|
||||
ULONG NodeCount;
|
||||
|
||||
@@ -48,6 +59,11 @@ BOOLEAN EtpInitializeD3DStatistics(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_STRING EtpQueryDeviceDescription(
|
||||
__in HDEVINFO DeviceInfoSet,
|
||||
__in PSP_DEVINFO_DATA DeviceInfoData
|
||||
);
|
||||
|
||||
VOID NTAPI ProcessesUpdatedCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
|
||||
@@ -23,81 +23,7 @@
|
||||
#include "exttools.h"
|
||||
#include "resource.h"
|
||||
#include <windowsx.h>
|
||||
|
||||
#define ET_GPU_PADDING 3
|
||||
|
||||
BOOLEAN EtpGpuSectionCallback(
|
||||
__in PPH_SYSINFO_SECTION Section,
|
||||
__in PH_SYSINFO_SECTION_MESSAGE Message,
|
||||
__in_opt PVOID Parameter1,
|
||||
__in_opt PVOID Parameter2
|
||||
);
|
||||
|
||||
VOID EtpInitializeGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUninitializeGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpTickGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpGpuDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpGpuPanelDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
VOID EtpCreateGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpLayoutGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpNotifyGpuGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpNotifyDedicatedGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpNotifySharedGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpUpdateGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUpdateGpuPanel(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_PROCESS_RECORD EtpReferenceMaxNodeRecord(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetMaxNodeString(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetGpuNameString(
|
||||
VOID
|
||||
);
|
||||
#include "gpusys.h"
|
||||
|
||||
static PPH_SYSINFO_SECTION GpuSection;
|
||||
static HWND GpuDialog;
|
||||
@@ -749,5 +675,12 @@ PPH_STRING EtpGetGpuNameString(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return PhCreateString(L"TODO");
|
||||
PPH_STRING description;
|
||||
|
||||
description = EtGetGpuAdapterDescription(0);
|
||||
|
||||
if (!description)
|
||||
description = PhReferenceEmptyString();
|
||||
|
||||
return description;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
#ifndef GPUSYS_H
|
||||
#define GPUSYS_H
|
||||
|
||||
#define ET_GPU_PADDING 3
|
||||
|
||||
BOOLEAN EtpGpuSectionCallback(
|
||||
__in PPH_SYSINFO_SECTION Section,
|
||||
__in PH_SYSINFO_SECTION_MESSAGE Message,
|
||||
__in_opt PVOID Parameter1,
|
||||
__in_opt PVOID Parameter2
|
||||
);
|
||||
|
||||
VOID EtpInitializeGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUninitializeGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpTickGpuDialog(
|
||||
VOID
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpGpuDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK EtpGpuPanelDialogProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
VOID EtpCreateGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpLayoutGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpNotifyGpuGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpNotifyDedicatedGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpNotifySharedGraph(
|
||||
__in NMHDR *Header
|
||||
);
|
||||
|
||||
VOID EtpUpdateGpuGraphs(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID EtpUpdateGpuPanel(
|
||||
VOID
|
||||
);
|
||||
|
||||
PPH_PROCESS_RECORD EtpReferenceMaxNodeRecord(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetMaxNodeString(
|
||||
__in LONG Index
|
||||
);
|
||||
|
||||
PPH_STRING EtpGetGpuNameString(
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -296,14 +296,7 @@ LOGICAL DllMain(
|
||||
{ StringSettingType, SETTING_NAME_DISK_TREE_LIST_COLUMNS, L"" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_DISK_TREE_LIST_SORT, L"4,2" }, // 4, DescendingSortOrder
|
||||
{ IntegerSettingType, SETTING_NAME_ENABLE_ETW_MONITOR, L"1" },
|
||||
{ IntegerSettingType, SETTING_NAME_ENABLE_GPU_MONITOR, L"1" },
|
||||
{ IntegerSettingType, SETTING_NAME_ETWSYS_ALWAYS_ON_TOP, L"0" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_ETWSYS_WINDOW_POSITION, L"400,400" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_ETWSYS_WINDOW_SIZE, L"500,400" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_MEMORY_LISTS_WINDOW_POSITION, L"400,400" },
|
||||
{ IntegerSettingType, SETTING_NAME_GPUSYS_ALWAYS_ON_TOP, L"0" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_GPUSYS_WINDOW_POSITION, L"400,400" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_GPUSYS_WINDOW_SIZE, L"500,500" }
|
||||
{ IntegerSettingType, SETTING_NAME_ENABLE_GPU_MONITOR, L"1" }
|
||||
};
|
||||
|
||||
PhAddSettings(settings, sizeof(settings) / sizeof(PH_SETTING_CREATE));
|
||||
@@ -350,16 +343,6 @@ VOID NTAPI MenuItemCallback(
|
||||
|
||||
switch (menuItem->Id)
|
||||
{
|
||||
case ID_VIEW_DISKANDNETWORK:
|
||||
{
|
||||
EtShowEtwSystemDialog();
|
||||
}
|
||||
break;
|
||||
case ID_VIEW_MEMORYLISTS:
|
||||
{
|
||||
EtShowMemoryListsDialog();
|
||||
}
|
||||
break;
|
||||
case ID_PROCESS_UNLOADEDMODULES:
|
||||
{
|
||||
EtShowUnloadedDllsDialog(PhMainWndHandle, menuItem->Context);
|
||||
@@ -405,13 +388,8 @@ VOID NTAPI MainWindowShowingCallback(
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_VIEW, L"System Information", ID_VIEW_MEMORYLISTS, L"Memory Lists", NULL);
|
||||
|
||||
if (EtEtwEnabled)
|
||||
{
|
||||
// This will get inserted before GPU Information.
|
||||
PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_VIEW, L"System Information", ID_VIEW_DISKANDNETWORK, L"Disk and Network", NULL);
|
||||
|
||||
EtInitializeDiskTab();
|
||||
}
|
||||
}
|
||||
@@ -560,6 +538,8 @@ VOID NTAPI SystemInformationInitializingCallback(
|
||||
{
|
||||
if (EtGpuEnabled)
|
||||
EtGpuSystemInformationInitializing(Parameter);
|
||||
if (EtEtwEnabled)
|
||||
EtEtwSystemInformationInitializing(Parameter);
|
||||
}
|
||||
|
||||
static VOID NTAPI ProcessesUpdatedCallback(
|
||||
|
||||
@@ -1,267 +0,0 @@
|
||||
/*
|
||||
* Process Hacker Extended Tools -
|
||||
* memory list information
|
||||
*
|
||||
* Copyright (C) 2010-2011 wj32
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
* Process Hacker is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Process Hacker is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "exttools.h"
|
||||
#include "resource.h"
|
||||
|
||||
#define MSG_UPDATE (WM_APP + 1)
|
||||
|
||||
INT_PTR CALLBACK EtpMemoryListsDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
HWND EtpMemoryListsWindowHandle = NULL;
|
||||
static PH_CALLBACK_REGISTRATION ProcessesUpdatedRegistration;
|
||||
|
||||
VOID EtShowMemoryListsDialog(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
if (!EtpMemoryListsWindowHandle)
|
||||
{
|
||||
EtpMemoryListsWindowHandle = CreateDialog(
|
||||
PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDD_MEMLISTS),
|
||||
PhMainWndHandle,
|
||||
EtpMemoryListsDlgProc
|
||||
);
|
||||
}
|
||||
|
||||
if (!IsWindowVisible(EtpMemoryListsWindowHandle))
|
||||
ShowWindow(EtpMemoryListsWindowHandle, SW_SHOW);
|
||||
else if (IsIconic(EtpMemoryListsWindowHandle))
|
||||
ShowWindow(EtpMemoryListsWindowHandle, SW_RESTORE);
|
||||
else
|
||||
SetForegroundWindow(EtpMemoryListsWindowHandle);
|
||||
}
|
||||
|
||||
VOID NTAPI EtpProcessesUpdatedCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
PostMessage(EtpMemoryListsWindowHandle, MSG_UPDATE, 0, 0);
|
||||
}
|
||||
|
||||
static VOID EtpUpdateMemoryListInfo(
|
||||
__in HWND hwndDlg
|
||||
)
|
||||
{
|
||||
SYSTEM_MEMORY_LIST_INFORMATION memoryListInfo;
|
||||
|
||||
if (NT_SUCCESS(NtQuerySystemInformation(
|
||||
SystemMemoryListInformation,
|
||||
&memoryListInfo,
|
||||
sizeof(SYSTEM_MEMORY_LIST_INFORMATION),
|
||||
NULL
|
||||
)))
|
||||
{
|
||||
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);
|
||||
SetDlgItemText(hwndDlg, IDC_ZMODIFIED_V, PhaFormatSize((ULONG64)memoryListInfo.ModifiedPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZMODIFIEDNOWRITE_V, PhaFormatSize((ULONG64)memoryListInfo.ModifiedNoWritePageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZBAD_V, PhaFormatSize((ULONG64)memoryListInfo.BadPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY_V, PhaFormatSize((ULONG64)standbyPageCount * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY0_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[0] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY1_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[1] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY2_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[2] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY3_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[3] * PAGE_SIZE, -1)->Buffer);
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY4_V, PhaFormatSize((ULONG64)memoryListInfo.PageCountByPriority[4] * PAGE_SIZE, -1)->Buffer);
|
||||
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
|
||||
{
|
||||
SetDlgItemText(hwndDlg, IDC_ZZEROED_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZFREE_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZMODIFIED_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZMODIFIEDNOWRITE_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZBAD_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY0_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY1_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY2_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY3_V, L"Unknown");
|
||||
SetDlgItemText(hwndDlg, IDC_ZSTANDBY4_V, L"Unknown");
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK EtpMemoryListsDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
PhRegisterCallback(&PhProcessesUpdatedEvent, EtpProcessesUpdatedCallback, NULL, &ProcessesUpdatedRegistration);
|
||||
EtpUpdateMemoryListInfo(hwndDlg);
|
||||
|
||||
PhLoadWindowPlacementFromSetting(SETTING_NAME_MEMORY_LISTS_WINDOW_POSITION, NULL, hwndDlg);
|
||||
PhRegisterDialog(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
{
|
||||
PhUnregisterDialog(hwndDlg);
|
||||
PhSaveWindowPlacementToSetting(SETTING_NAME_MEMORY_LISTS_WINDOW_POSITION, NULL, hwndDlg);
|
||||
|
||||
PhUnregisterCallback(&PhProcessesUpdatedEvent, &ProcessesUpdatedRegistration);
|
||||
|
||||
EtpMemoryListsWindowHandle = NULL;
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDCANCEL:
|
||||
case IDOK:
|
||||
DestroyWindow(hwndDlg);
|
||||
break;
|
||||
case IDC_EMPTY:
|
||||
{
|
||||
HMENU menu;
|
||||
HMENU subMenu;
|
||||
RECT buttonRect;
|
||||
POINT point;
|
||||
UINT selectedItem;
|
||||
SYSTEM_MEMORY_LIST_COMMAND command = -1;
|
||||
|
||||
menu = LoadMenu(PluginInstance->DllBase, MAKEINTRESOURCE(IDR_EMPTYMEMLISTS));
|
||||
subMenu = GetSubMenu(menu, 0);
|
||||
|
||||
GetClientRect(GetDlgItem(hwndDlg, IDC_EMPTY), &buttonRect);
|
||||
point.x = 0;
|
||||
point.y = buttonRect.bottom;
|
||||
|
||||
ClientToScreen(GetDlgItem(hwndDlg, IDC_EMPTY), &point);
|
||||
selectedItem = PhShowContextMenu2(
|
||||
hwndDlg,
|
||||
GetDlgItem(hwndDlg, IDC_EMPTY),
|
||||
subMenu,
|
||||
point
|
||||
);
|
||||
|
||||
switch (selectedItem)
|
||||
{
|
||||
case ID_EMPTY_EMPTYWORKINGSETS:
|
||||
command = MemoryEmptyWorkingSets;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYMODIFIEDPAGELIST:
|
||||
command = MemoryFlushModifiedList;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYSTANDBYLIST:
|
||||
command = MemoryPurgeStandbyList;
|
||||
break;
|
||||
case ID_EMPTY_EMPTYPRIORITY0STANDBYLIST:
|
||||
command = MemoryPurgeLowPriorityStandbyList;
|
||||
break;
|
||||
}
|
||||
|
||||
if (command != -1)
|
||||
{
|
||||
NTSTATUS status;
|
||||
PVOID returnedState;
|
||||
ULONG privilege = SE_PROF_SINGLE_PROCESS_PRIVILEGE;
|
||||
|
||||
if (NT_SUCCESS(status = RtlAcquirePrivilege(
|
||||
&privilege,
|
||||
1,
|
||||
0,
|
||||
&returnedState
|
||||
)))
|
||||
{
|
||||
status = NtSetSystemInformation(
|
||||
SystemMemoryListInformation,
|
||||
&command,
|
||||
sizeof(SYSTEM_MEMORY_LIST_COMMAND)
|
||||
);
|
||||
RtlReleasePrivilege(returnedState);
|
||||
}
|
||||
|
||||
if (status == STATUS_PRIVILEGE_NOT_HELD)
|
||||
{
|
||||
PhShowError(hwndDlg, L"Process Hacker must be elevated to execute this command.");
|
||||
}
|
||||
else if (!NT_SUCCESS(status))
|
||||
{
|
||||
PhShowStatus(hwndDlg, L"Unable to execute the memory list command", status, 0);
|
||||
}
|
||||
}
|
||||
|
||||
DestroyMenu(menu);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSG_UPDATE:
|
||||
{
|
||||
EtpUpdateMemoryListInfo(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -15,10 +15,10 @@
|
||||
#define IDD_DIALOG1 106
|
||||
#define IDD_PROCDISKNET 106
|
||||
#define IDC_NETWORK 106
|
||||
#define IDD_SYSDISKNET 107
|
||||
#define ID_VIEW_DISKANDNETWORK 107
|
||||
#define IDD_SYSDISKNET_PANEL 108
|
||||
#define ID_PROCESS_WSWATCH 108
|
||||
#define IDD_SYSINFO_DISKPANEL 108
|
||||
#define IDD_OPTIONS 109
|
||||
#define IDC_GPU 109
|
||||
#define IDD_WSWATCH 110
|
||||
@@ -33,6 +33,9 @@
|
||||
#define ID_VIEW_GPUINFORMATION 112
|
||||
#define IDD_SYSINFO_GPUPANEL 112
|
||||
#define IDD_PROCGPU 113
|
||||
#define IDD_SYSINFO_DISK 114
|
||||
#define IDD_SYSINFO_NETPANEL 116
|
||||
#define IDD_SYSINFO_NET 117
|
||||
#define IDC_LIST 1001
|
||||
#define IDC_REFRESH 1002
|
||||
#define IDC_SEQUENCENUMBER 1003
|
||||
@@ -67,9 +70,6 @@
|
||||
#define IDC_ZSENDS_V 1032
|
||||
#define IDC_ZSENDBYTES_V 1033
|
||||
#define IDC_ZSENDBYTESDELTA_V 1034
|
||||
#define IDC_GROUPDISK 1035
|
||||
#define IDC_GROUPNETWORK 1036
|
||||
#define IDC_ALWAYSONTOP 1037
|
||||
#define IDC_ENABLEETW 1038
|
||||
#define IDC_ENABLEETWMONITOR 1038
|
||||
#define IDC_ENABLE 1039
|
||||
@@ -115,6 +115,10 @@
|
||||
#define IDC_GPU_L 1079
|
||||
#define IDC_DEDICATED_L 1080
|
||||
#define IDC_SHARED_L 1081
|
||||
#define IDC_ZRECEIVESDELTA_V 1082
|
||||
#define IDC_ZSENDSDELTA_V 1083
|
||||
#define IDC_ZWRITESDELTA_V 1084
|
||||
#define IDC_ZREADSDELTA_V 1085
|
||||
#define ID_EMPTY_EMPTYWORKINGSETS 40001
|
||||
#define ID_EMPTY_EMPTYMODIFIEDPAGELIST 40002
|
||||
#define ID_EMPTY_EMPTYSTANDBYLIST 40003
|
||||
@@ -130,7 +134,7 @@
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 113
|
||||
#define _APS_NEXT_COMMAND_VALUE 40009
|
||||
#define _APS_NEXT_CONTROL_VALUE 1082
|
||||
#define _APS_NEXT_CONTROL_VALUE 1086
|
||||
#define _APS_NEXT_SYMED_VALUE 113
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user