mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
36a4284b8d
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@5548 21ef857c-d57f-4fe0-8362-d861dc6d29cd
965 lines
22 KiB
C
965 lines
22 KiB
C
#ifndef UIMODELS_H
|
|
#define UIMODELS_H
|
|
|
|
// Common state highlighting support
|
|
|
|
typedef struct _PH_SH_STATE
|
|
{
|
|
PH_ITEM_STATE State;
|
|
HANDLE StateListHandle;
|
|
ULONG TickCount;
|
|
} PH_SH_STATE, *PPH_SH_STATE;
|
|
|
|
FORCEINLINE VOID PhChangeShStateTn(
|
|
_Inout_ PPH_TREENEW_NODE Node,
|
|
_Inout_ PPH_SH_STATE ShState,
|
|
_Inout_ PPH_POINTER_LIST *StateList,
|
|
_In_ PH_ITEM_STATE NewState,
|
|
_In_ COLORREF NewTempBackColor,
|
|
_In_opt_ HWND TreeNewHandleForUpdate
|
|
)
|
|
{
|
|
if (!*StateList)
|
|
*StateList = PhCreatePointerList(4);
|
|
|
|
if (ShState->State == NormalItemState)
|
|
ShState->StateListHandle = PhAddItemPointerList(*StateList, Node);
|
|
|
|
ShState->TickCount = GetTickCount();
|
|
ShState->State = NewState;
|
|
|
|
Node->UseTempBackColor = TRUE;
|
|
Node->TempBackColor = NewTempBackColor;
|
|
|
|
if (TreeNewHandleForUpdate)
|
|
TreeNew_InvalidateNode(TreeNewHandleForUpdate, Node);
|
|
}
|
|
|
|
#define PH_TICK_SH_STATE_TN(NodeType, ShStateFieldName, StateList, RemoveFunction, HighlightingDuration, TreeNewHandleForUpdate, Invalidate, FullyInvalidated, ...) \
|
|
do { \
|
|
NodeType *node; \
|
|
ULONG enumerationKey = 0; \
|
|
ULONG tickCount; \
|
|
BOOLEAN preferFullInvalidate; \
|
|
HANDLE stateListHandle; \
|
|
BOOLEAN redrawDisabled = FALSE; \
|
|
BOOLEAN needsFullInvalidate = FALSE; \
|
|
\
|
|
if (!StateList || StateList->Count == 0) \
|
|
break; \
|
|
\
|
|
tickCount = GetTickCount(); \
|
|
preferFullInvalidate = StateList->Count > 8; \
|
|
\
|
|
while (PhEnumPointerList(StateList, &enumerationKey, &node)) \
|
|
{ \
|
|
if (PhRoundNumber(tickCount - node->ShStateFieldName.TickCount, 100) < (HighlightingDuration)) \
|
|
continue; \
|
|
\
|
|
stateListHandle = node->ShStateFieldName.StateListHandle; \
|
|
\
|
|
if (node->ShStateFieldName.State == NewItemState) \
|
|
{ \
|
|
node->ShStateFieldName.State = NormalItemState; \
|
|
((PPH_TREENEW_NODE)node)->UseTempBackColor = FALSE; \
|
|
if (Invalidate) \
|
|
{ \
|
|
if (preferFullInvalidate) \
|
|
{ \
|
|
needsFullInvalidate = TRUE; \
|
|
} \
|
|
else \
|
|
{ \
|
|
TreeNew_InvalidateNode(TreeNewHandleForUpdate, node); \
|
|
} \
|
|
} \
|
|
} \
|
|
else if (node->ShStateFieldName.State == RemovingItemState) \
|
|
{ \
|
|
if (TreeNewHandleForUpdate) \
|
|
{ \
|
|
if (!redrawDisabled) \
|
|
{ \
|
|
TreeNew_SetRedraw((TreeNewHandleForUpdate), FALSE); \
|
|
redrawDisabled = TRUE; \
|
|
} \
|
|
} \
|
|
\
|
|
RemoveFunction(node, __VA_ARGS__); \
|
|
needsFullInvalidate = TRUE; \
|
|
} \
|
|
\
|
|
PhRemoveItemPointerList(StateList, stateListHandle); \
|
|
} \
|
|
\
|
|
if (TreeNewHandleForUpdate) \
|
|
{ \
|
|
if (redrawDisabled) \
|
|
TreeNew_SetRedraw((TreeNewHandleForUpdate), TRUE); \
|
|
if (needsFullInvalidate) \
|
|
{ \
|
|
InvalidateRect((TreeNewHandleForUpdate), NULL, FALSE); \
|
|
if (FullyInvalidated) \
|
|
*((PBOOLEAN)FullyInvalidated) = TRUE; \
|
|
} \
|
|
} \
|
|
} while (0)
|
|
|
|
// proctree
|
|
|
|
// Columns
|
|
|
|
// Default columns should go first
|
|
#define PHPRTLC_NAME 0
|
|
#define PHPRTLC_PID 1
|
|
#define PHPRTLC_CPU 2
|
|
#define PHPRTLC_IOTOTALRATE 3
|
|
#define PHPRTLC_PRIVATEBYTES 4
|
|
#define PHPRTLC_USERNAME 5
|
|
#define PHPRTLC_DESCRIPTION 6
|
|
|
|
#define PHPRTLC_COMPANYNAME 7
|
|
#define PHPRTLC_VERSION 8
|
|
#define PHPRTLC_FILENAME 9
|
|
#define PHPRTLC_COMMANDLINE 10
|
|
#define PHPRTLC_PEAKPRIVATEBYTES 11
|
|
#define PHPRTLC_WORKINGSET 12
|
|
#define PHPRTLC_PEAKWORKINGSET 13
|
|
#define PHPRTLC_PRIVATEWS 14
|
|
#define PHPRTLC_SHAREDWS 15
|
|
#define PHPRTLC_SHAREABLEWS 16
|
|
#define PHPRTLC_VIRTUALSIZE 17
|
|
#define PHPRTLC_PEAKVIRTUALSIZE 18
|
|
#define PHPRTLC_PAGEFAULTS 19
|
|
#define PHPRTLC_SESSIONID 20
|
|
#define PHPRTLC_PRIORITYCLASS 21
|
|
#define PHPRTLC_BASEPRIORITY 22
|
|
|
|
#define PHPRTLC_THREADS 23
|
|
#define PHPRTLC_HANDLES 24
|
|
#define PHPRTLC_GDIHANDLES 25
|
|
#define PHPRTLC_USERHANDLES 26
|
|
#define PHPRTLC_IORORATE 27
|
|
#define PHPRTLC_IOWRATE 28
|
|
#define PHPRTLC_INTEGRITY 29
|
|
#define PHPRTLC_IOPRIORITY 30
|
|
#define PHPRTLC_PAGEPRIORITY 31
|
|
#define PHPRTLC_STARTTIME 32
|
|
#define PHPRTLC_TOTALCPUTIME 33
|
|
#define PHPRTLC_KERNELCPUTIME 34
|
|
#define PHPRTLC_USERCPUTIME 35
|
|
#define PHPRTLC_VERIFICATIONSTATUS 36
|
|
#define PHPRTLC_VERIFIEDSIGNER 37
|
|
#define PHPRTLC_ASLR 38
|
|
#define PHPRTLC_RELATIVESTARTTIME 39
|
|
#define PHPRTLC_BITS 40
|
|
#define PHPRTLC_ELEVATION 41
|
|
#define PHPRTLC_WINDOWTITLE 42
|
|
#define PHPRTLC_WINDOWSTATUS 43
|
|
#define PHPRTLC_CYCLES 44
|
|
#define PHPRTLC_CYCLESDELTA 45
|
|
#define PHPRTLC_CPUHISTORY 46
|
|
#define PHPRTLC_PRIVATEBYTESHISTORY 47
|
|
#define PHPRTLC_IOHISTORY 48
|
|
#define PHPRTLC_DEPSTATUS 49
|
|
#define PHPRTLC_VIRTUALIZED 50
|
|
#define PHPRTLC_CONTEXTSWITCHES 51
|
|
#define PHPRTLC_CONTEXTSWITCHESDELTA 52
|
|
#define PHPRTLC_PAGEFAULTSDELTA 53
|
|
|
|
#define PHPRTLC_IOREADS 54
|
|
#define PHPRTLC_IOWRITES 55
|
|
#define PHPRTLC_IOOTHER 56
|
|
#define PHPRTLC_IOREADBYTES 57
|
|
#define PHPRTLC_IOWRITEBYTES 58
|
|
#define PHPRTLC_IOOTHERBYTES 59
|
|
#define PHPRTLC_IOREADSDELTA 60
|
|
#define PHPRTLC_IOWRITESDELTA 61
|
|
#define PHPRTLC_IOOTHERDELTA 62
|
|
|
|
#define PHPRTLC_OSCONTEXT 63
|
|
#define PHPRTLC_PAGEDPOOL 64
|
|
#define PHPRTLC_PEAKPAGEDPOOL 65
|
|
#define PHPRTLC_NONPAGEDPOOL 66
|
|
#define PHPRTLC_PEAKNONPAGEDPOOL 67
|
|
#define PHPRTLC_MINIMUMWORKINGSET 68
|
|
#define PHPRTLC_MAXIMUMWORKINGSET 69
|
|
#define PHPRTLC_PRIVATEBYTESDELTA 70
|
|
#define PHPRTLC_SUBSYSTEM 71
|
|
#define PHPRTLC_PACKAGENAME 72
|
|
#define PHPRTLC_APPID 73
|
|
#define PHPRTLC_DPIAWARENESS 74
|
|
|
|
#define PHPRTLC_MAXIMUM 75
|
|
#define PHPRTLC_IOGROUP_COUNT 9
|
|
|
|
#define PHPN_WSCOUNTERS 0x1
|
|
#define PHPN_GDIUSERHANDLES 0x2
|
|
#define PHPN_IOPAGEPRIORITY 0x4
|
|
#define PHPN_WINDOW 0x8
|
|
#define PHPN_DEPSTATUS 0x10
|
|
#define PHPN_TOKEN 0x20
|
|
#define PHPN_OSCONTEXT 0x40
|
|
#define PHPN_QUOTALIMITS 0x80
|
|
#define PHPN_IMAGE 0x100
|
|
#define PHPN_APPID 0x200
|
|
#define PHPN_DPIAWARENESS 0x400
|
|
|
|
typedef struct _PH_PROCESS_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_HASH_ENTRY HashEntry;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
HANDLE ProcessId;
|
|
PPH_PROCESS_ITEM ProcessItem;
|
|
|
|
struct _PH_PROCESS_NODE *Parent;
|
|
PPH_LIST Children;
|
|
|
|
PH_STRINGREF TextCache[PHPRTLC_MAXIMUM];
|
|
|
|
PH_STRINGREF DescriptionText;
|
|
|
|
// If the user has selected certain columns we need extra information
|
|
// that isn't retrieved by the process provider.
|
|
ULONG ValidMask;
|
|
|
|
// WS counters
|
|
PH_PROCESS_WS_COUNTERS WsCounters;
|
|
// GDI, USER handles
|
|
ULONG GdiHandles;
|
|
ULONG UserHandles;
|
|
// I/O, Page priority
|
|
ULONG IoPriority;
|
|
ULONG PagePriority;
|
|
// Window
|
|
HWND WindowHandle;
|
|
PPH_STRING WindowText;
|
|
BOOLEAN WindowHung;
|
|
// DEP status
|
|
ULONG DepStatus;
|
|
// Token
|
|
BOOLEAN VirtualizationAllowed;
|
|
BOOLEAN VirtualizationEnabled;
|
|
// OS Context
|
|
GUID OsContextGuid;
|
|
ULONG OsContextVersion;
|
|
// Quota Limits
|
|
SIZE_T MinimumWorkingSetSize;
|
|
SIZE_T MaximumWorkingSetSize;
|
|
// Image
|
|
USHORT ImageCharacteristics;
|
|
USHORT ImageReserved;
|
|
USHORT ImageSubsystem;
|
|
USHORT ImageDllCharacteristics;
|
|
// App ID
|
|
PPH_STRING AppIdText;
|
|
// Cycles (Vista only)
|
|
PH_UINT64_DELTA CyclesDelta;
|
|
// DPI Awareness
|
|
ULONG DpiAwareness;
|
|
|
|
PPH_STRING TooltipText;
|
|
|
|
// Text buffers
|
|
WCHAR CpuUsageText[PH_INT32_STR_LEN_1];
|
|
PPH_STRING IoTotalRateText;
|
|
PPH_STRING PrivateBytesText;
|
|
PPH_STRING PeakPrivateBytesText;
|
|
PPH_STRING WorkingSetText;
|
|
PPH_STRING PeakWorkingSetText;
|
|
PPH_STRING PrivateWsText;
|
|
PPH_STRING SharedWsText;
|
|
PPH_STRING ShareableWsText;
|
|
PPH_STRING VirtualSizeText;
|
|
PPH_STRING PeakVirtualSizeText;
|
|
PPH_STRING PageFaultsText;
|
|
WCHAR BasePriorityText[PH_INT32_STR_LEN_1];
|
|
WCHAR ThreadsText[PH_INT32_STR_LEN_1 + 3];
|
|
WCHAR HandlesText[PH_INT32_STR_LEN_1 + 3];
|
|
WCHAR GdiHandlesText[PH_INT32_STR_LEN_1 + 3];
|
|
WCHAR UserHandlesText[PH_INT32_STR_LEN_1 + 3];
|
|
PPH_STRING IoRoRateText;
|
|
PPH_STRING IoWRateText;
|
|
WCHAR PagePriorityText[PH_INT32_STR_LEN_1];
|
|
PPH_STRING StartTimeText;
|
|
WCHAR TotalCpuTimeText[PH_TIMESPAN_STR_LEN_1];
|
|
WCHAR KernelCpuTimeText[PH_TIMESPAN_STR_LEN_1];
|
|
WCHAR UserCpuTimeText[PH_TIMESPAN_STR_LEN_1];
|
|
PPH_STRING RelativeStartTimeText;
|
|
PPH_STRING WindowTitleText;
|
|
PPH_STRING CyclesText;
|
|
PPH_STRING CyclesDeltaText;
|
|
PPH_STRING ContextSwitchesText;
|
|
PPH_STRING ContextSwitchesDeltaText;
|
|
PPH_STRING PageFaultsDeltaText;
|
|
PPH_STRING IoGroupText[PHPRTLC_IOGROUP_COUNT];
|
|
PPH_STRING PagedPoolText;
|
|
PPH_STRING PeakPagedPoolText;
|
|
PPH_STRING NonPagedPoolText;
|
|
PPH_STRING PeakNonPagedPoolText;
|
|
PPH_STRING MinimumWorkingSetText;
|
|
PPH_STRING MaximumWorkingSetText;
|
|
PPH_STRING PrivateBytesDeltaText;
|
|
|
|
// Graph buffers
|
|
PH_GRAPH_BUFFERS CpuGraphBuffers;
|
|
PH_GRAPH_BUFFERS PrivateGraphBuffers;
|
|
PH_GRAPH_BUFFERS IoGraphBuffers;
|
|
} PH_PROCESS_NODE, *PPH_PROCESS_NODE;
|
|
|
|
VOID PhProcessTreeListInitialization(
|
|
VOID
|
|
);
|
|
|
|
VOID PhInitializeProcessTreeList(
|
|
_In_ HWND hwnd
|
|
);
|
|
|
|
VOID PhLoadSettingsProcessTreeList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhSaveSettingsProcessTreeList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhReloadSettingsProcessTreeList(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportProcessTreeList(
|
|
VOID
|
|
);
|
|
|
|
PPH_PROCESS_NODE PhAddProcessNode(
|
|
_In_ PPH_PROCESS_ITEM ProcessItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_PROCESS_NODE PhFindProcessNode(
|
|
_In_ HANDLE ProcessId
|
|
);
|
|
|
|
VOID PhRemoveProcessNode(
|
|
_In_ PPH_PROCESS_NODE ProcessNode
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhUpdateProcessNode(
|
|
_In_ PPH_PROCESS_NODE ProcessNode
|
|
);
|
|
|
|
VOID PhTickProcessNodes(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_PROCESS_ITEM PhGetSelectedProcessItem(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhGetSelectedProcessItems(
|
|
_Out_ PPH_PROCESS_ITEM **Processes,
|
|
_Out_ PULONG NumberOfProcesses
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhDeselectAllProcessNodes(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhExpandAllProcessNodes(
|
|
_In_ BOOLEAN Expand
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhInvalidateAllProcessNodes(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhSelectAndEnsureVisibleProcessNode(
|
|
_In_ PPH_PROCESS_NODE ProcessNode
|
|
);
|
|
|
|
PPH_LIST PhGetProcessTreeListLines(
|
|
_In_ HWND TreeListHandle,
|
|
_In_ ULONG NumberOfNodes,
|
|
_In_ PPH_LIST RootNodes,
|
|
_In_ ULONG Mode
|
|
);
|
|
|
|
VOID PhCopyProcessTree(
|
|
VOID
|
|
);
|
|
|
|
VOID PhWriteProcessTree(
|
|
_Inout_ PPH_FILE_STREAM FileStream,
|
|
_In_ ULONG Mode
|
|
);
|
|
|
|
// srvlist
|
|
|
|
// Columns
|
|
|
|
#define PHSVTLC_NAME 0
|
|
#define PHSVTLC_DISPLAYNAME 1
|
|
#define PHSVTLC_TYPE 2
|
|
#define PHSVTLC_STATUS 3
|
|
#define PHSVTLC_STARTTYPE 4
|
|
#define PHSVTLC_PID 5
|
|
|
|
#define PHSVTLC_BINARYPATH 6
|
|
#define PHSVTLC_ERRORCONTROL 7
|
|
#define PHSVTLC_GROUP 8
|
|
#define PHSVTLC_DESCRIPTION 9
|
|
|
|
#define PHSVTLC_MAXIMUM 10
|
|
|
|
#define PHSN_CONFIG 0x1
|
|
#define PHSN_DESCRIPTION 0x2
|
|
|
|
typedef struct _PH_SERVICE_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
PPH_SERVICE_ITEM ServiceItem;
|
|
|
|
PH_STRINGREF TextCache[PHSVTLC_MAXIMUM];
|
|
|
|
ULONG ValidMask;
|
|
|
|
// Config
|
|
PPH_STRING BinaryPath;
|
|
PPH_STRING LoadOrderGroup;
|
|
// Description
|
|
PPH_STRING Description;
|
|
|
|
PPH_STRING TooltipText;
|
|
} PH_SERVICE_NODE, *PPH_SERVICE_NODE;
|
|
|
|
VOID PhServiceTreeListInitialization(
|
|
VOID
|
|
);
|
|
|
|
VOID PhInitializeServiceTreeList(
|
|
_In_ HWND hwnd
|
|
);
|
|
|
|
VOID PhLoadSettingsServiceTreeList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhSaveSettingsServiceTreeList(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportServiceTreeList(
|
|
VOID
|
|
);
|
|
|
|
PPH_SERVICE_NODE PhAddServiceNode(
|
|
_In_ PPH_SERVICE_ITEM ServiceItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_SERVICE_NODE PhFindServiceNode(
|
|
_In_ PPH_SERVICE_ITEM ServiceItem
|
|
);
|
|
|
|
VOID PhRemoveServiceNode(
|
|
_In_ PPH_SERVICE_NODE ServiceNode
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhUpdateServiceNode(
|
|
_In_ PPH_SERVICE_NODE ServiceNode
|
|
);
|
|
|
|
VOID PhTickServiceNodes(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_SERVICE_ITEM PhGetSelectedServiceItem(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhGetSelectedServiceItems(
|
|
_Out_ PPH_SERVICE_ITEM **Services,
|
|
_Out_ PULONG NumberOfServices
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhDeselectAllServiceNodes(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
VOID PhSelectAndEnsureVisibleServiceNode(
|
|
_In_ PPH_SERVICE_NODE ServiceNode
|
|
);
|
|
|
|
VOID PhCopyServiceList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhWriteServiceList(
|
|
_Inout_ PPH_FILE_STREAM FileStream,
|
|
_In_ ULONG Mode
|
|
);
|
|
|
|
// netlist
|
|
|
|
// Columns
|
|
|
|
#define PHNETLC_PROCESS 0
|
|
#define PHNETLC_LOCALADDRESS 1
|
|
#define PHNETLC_LOCALPORT 2
|
|
#define PHNETLC_REMOTEADDRESS 3
|
|
#define PHNETLC_REMOTEPORT 4
|
|
#define PHNETLC_PROTOCOL 5
|
|
#define PHNETLC_STATE 6
|
|
#define PHNETLC_OWNER 7
|
|
#define PHNETLC_TIMESTAMP 8
|
|
#define PHNETLC_MAXIMUM 9
|
|
|
|
typedef struct _PH_NETWORK_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
PPH_NETWORK_ITEM NetworkItem;
|
|
|
|
PH_STRINGREF TextCache[PHNETLC_MAXIMUM];
|
|
|
|
LONG UniqueId;
|
|
PPH_STRING ProcessNameText;
|
|
PH_STRINGREF LocalAddressText;
|
|
PH_STRINGREF RemoteAddressText;
|
|
PPH_STRING TimeStampText;
|
|
|
|
PPH_STRING TooltipText;
|
|
} PH_NETWORK_NODE, *PPH_NETWORK_NODE;
|
|
|
|
VOID PhNetworkTreeListInitialization(
|
|
VOID
|
|
);
|
|
|
|
VOID PhInitializeNetworkTreeList(
|
|
_In_ HWND hwnd
|
|
);
|
|
|
|
VOID PhLoadSettingsNetworkTreeList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhSaveSettingsNetworkTreeList(
|
|
VOID
|
|
);
|
|
|
|
PHAPPAPI
|
|
struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportNetworkTreeList(
|
|
VOID
|
|
);
|
|
|
|
PPH_NETWORK_NODE PhAddNetworkNode(
|
|
_In_ PPH_NETWORK_ITEM NetworkItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_NETWORK_NODE
|
|
NTAPI
|
|
PhFindNetworkNode(
|
|
_In_ PPH_NETWORK_ITEM NetworkItem
|
|
);
|
|
|
|
VOID PhRemoveNetworkNode(
|
|
_In_ PPH_NETWORK_NODE NetworkNode
|
|
);
|
|
|
|
VOID PhUpdateNetworkNode(
|
|
_In_ PPH_NETWORK_NODE NetworkNode
|
|
);
|
|
|
|
VOID PhTickNetworkNodes(
|
|
VOID
|
|
);
|
|
|
|
PPH_NETWORK_ITEM PhGetSelectedNetworkItem(
|
|
VOID
|
|
);
|
|
|
|
VOID PhGetSelectedNetworkItems(
|
|
_Out_ PPH_NETWORK_ITEM **NetworkItems,
|
|
_Out_ PULONG NumberOfNetworkItems
|
|
);
|
|
|
|
VOID PhDeselectAllNetworkNodes(
|
|
VOID
|
|
);
|
|
|
|
VOID PhSelectAndEnsureVisibleNetworkNode(
|
|
_In_ PPH_NETWORK_NODE NetworkNode
|
|
);
|
|
|
|
VOID PhCopyNetworkList(
|
|
VOID
|
|
);
|
|
|
|
VOID PhWriteNetworkList(
|
|
_Inout_ PPH_FILE_STREAM FileStream,
|
|
_In_ ULONG Mode
|
|
);
|
|
|
|
// thrdlist
|
|
|
|
// Columns
|
|
|
|
#define PHTHTLC_TID 0
|
|
#define PHTHTLC_CPU 1
|
|
#define PHTHTLC_CYCLESDELTA 2
|
|
#define PHTHTLC_STARTADDRESS 3
|
|
#define PHTHTLC_PRIORITY 4
|
|
#define PHTHTLC_SERVICE 5
|
|
|
|
#define PHTHTLC_MAXIMUM 6
|
|
|
|
typedef struct _PH_THREAD_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
HANDLE ThreadId;
|
|
PPH_THREAD_ITEM ThreadItem;
|
|
|
|
PH_STRINGREF TextCache[PHTHTLC_MAXIMUM];
|
|
|
|
ULONG ValidMask;
|
|
|
|
WCHAR CpuUsageText[PH_INT32_STR_LEN_1];
|
|
PPH_STRING CyclesDeltaText; // used for Context Switches Delta as well
|
|
PPH_STRING StartAddressText;
|
|
PPH_STRING PriorityText;
|
|
} PH_THREAD_NODE, *PPH_THREAD_NODE;
|
|
|
|
typedef struct _PH_THREAD_LIST_CONTEXT
|
|
{
|
|
HWND ParentWindowHandle;
|
|
HWND TreeNewHandle;
|
|
ULONG TreeNewSortColumn;
|
|
PH_SORT_ORDER TreeNewSortOrder;
|
|
PH_CM_MANAGER Cm;
|
|
BOOLEAN UseCycleTime;
|
|
BOOLEAN HasServices;
|
|
|
|
PPH_HASHTABLE NodeHashtable;
|
|
PPH_LIST NodeList;
|
|
|
|
BOOLEAN EnableStateHighlighting;
|
|
PPH_POINTER_LIST NodeStateList;
|
|
} PH_THREAD_LIST_CONTEXT, *PPH_THREAD_LIST_CONTEXT;
|
|
|
|
VOID PhInitializeThreadList(
|
|
_In_ HWND ParentWindowHandle,
|
|
_In_ HWND TreeNewHandle,
|
|
_In_ PPH_PROCESS_ITEM ProcessItem,
|
|
_Out_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhDeleteThreadList(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhLoadSettingsThreadList(
|
|
_Inout_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhSaveSettingsThreadList(
|
|
_Inout_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
PPH_THREAD_NODE PhAddThreadNode(
|
|
_Inout_ PPH_THREAD_LIST_CONTEXT Context,
|
|
_In_ PPH_THREAD_ITEM ThreadItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PPH_THREAD_NODE PhFindThreadNode(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context,
|
|
_In_ HANDLE ThreadId
|
|
);
|
|
|
|
VOID PhRemoveThreadNode(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context,
|
|
_In_ PPH_THREAD_NODE ThreadNode
|
|
);
|
|
|
|
VOID PhUpdateThreadNode(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context,
|
|
_In_ PPH_THREAD_NODE ThreadNode
|
|
);
|
|
|
|
VOID PhTickThreadNodes(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
PPH_THREAD_ITEM PhGetSelectedThreadItem(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhGetSelectedThreadItems(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context,
|
|
_Out_ PPH_THREAD_ITEM **Threads,
|
|
_Out_ PULONG NumberOfThreads
|
|
);
|
|
|
|
VOID PhDeselectAllThreadNodes(
|
|
_In_ PPH_THREAD_LIST_CONTEXT Context
|
|
);
|
|
|
|
// modlist
|
|
|
|
// Columns
|
|
|
|
#define PHMOTLC_NAME 0
|
|
#define PHMOTLC_BASEADDRESS 1
|
|
#define PHMOTLC_SIZE 2
|
|
#define PHMOTLC_DESCRIPTION 3
|
|
|
|
#define PHMOTLC_COMPANYNAME 4
|
|
#define PHMOTLC_VERSION 5
|
|
#define PHMOTLC_FILENAME 6
|
|
|
|
#define PHMOTLC_TYPE 7
|
|
#define PHMOTLC_LOADCOUNT 8
|
|
#define PHMOTLC_VERIFICATIONSTATUS 9
|
|
#define PHMOTLC_VERIFIEDSIGNER 10
|
|
#define PHMOTLC_ASLR 11
|
|
#define PHMOTLC_TIMESTAMP 12
|
|
|
|
#define PHMOTLC_MAXIMUM 13
|
|
|
|
typedef struct _PH_MODULE_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
PPH_MODULE_ITEM ModuleItem;
|
|
|
|
PH_STRINGREF TextCache[PHMOTLC_MAXIMUM];
|
|
|
|
ULONG ValidMask;
|
|
|
|
PPH_STRING TooltipText;
|
|
|
|
PPH_STRING SizeText;
|
|
WCHAR LoadCountText[PH_INT32_STR_LEN_1];
|
|
PPH_STRING TimeStampText;
|
|
} PH_MODULE_NODE, *PPH_MODULE_NODE;
|
|
|
|
typedef struct _PH_MODULE_LIST_CONTEXT
|
|
{
|
|
HWND ParentWindowHandle;
|
|
HWND TreeNewHandle;
|
|
ULONG TreeNewSortColumn;
|
|
PH_SORT_ORDER TreeNewSortOrder;
|
|
PH_CM_MANAGER Cm;
|
|
|
|
PPH_HASHTABLE NodeHashtable;
|
|
PPH_LIST NodeList;
|
|
|
|
BOOLEAN EnableStateHighlighting;
|
|
PPH_POINTER_LIST NodeStateList;
|
|
|
|
HFONT BoldFont;
|
|
} PH_MODULE_LIST_CONTEXT, *PPH_MODULE_LIST_CONTEXT;
|
|
|
|
VOID PhInitializeModuleList(
|
|
_In_ HWND ParentWindowHandle,
|
|
_In_ HWND TreeNewHandle,
|
|
_In_ PPH_PROCESS_ITEM ProcessItem,
|
|
_Out_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhDeleteModuleList(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhLoadSettingsModuleList(
|
|
_Inout_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhSaveSettingsModuleList(
|
|
_Inout_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
PPH_MODULE_NODE PhAddModuleNode(
|
|
_Inout_ PPH_MODULE_LIST_CONTEXT Context,
|
|
_In_ PPH_MODULE_ITEM ModuleItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PPH_MODULE_NODE PhFindModuleNode(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context,
|
|
_In_ PPH_MODULE_ITEM ModuleItem
|
|
);
|
|
|
|
VOID PhRemoveModuleNode(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context,
|
|
_In_ PPH_MODULE_NODE ModuleNode
|
|
);
|
|
|
|
VOID PhUpdateModuleNode(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context,
|
|
_In_ PPH_MODULE_NODE ModuleNode
|
|
);
|
|
|
|
VOID PhTickModuleNodes(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
PPH_MODULE_ITEM PhGetSelectedModuleItem(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhGetSelectedModuleItems(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context,
|
|
_Out_ PPH_MODULE_ITEM **Modules,
|
|
_Out_ PULONG NumberOfModules
|
|
);
|
|
|
|
VOID PhDeselectAllModuleNodes(
|
|
_In_ PPH_MODULE_LIST_CONTEXT Context
|
|
);
|
|
|
|
// hndllist
|
|
|
|
// Columns
|
|
|
|
#define PHHNTLC_TYPE 0
|
|
#define PHHNTLC_NAME 1
|
|
#define PHHNTLC_HANDLE 2
|
|
|
|
#define PHHNTLC_OBJECTADDRESS 3
|
|
#define PHHNTLC_ATTRIBUTES 4
|
|
#define PHHNTLC_GRANTEDACCESS 5
|
|
#define PHHNTLC_GRANTEDACCESSSYMBOLIC 6
|
|
#define PHHNTLC_ORIGINALNAME 7
|
|
#define PHHNTLC_FILESHAREACCESS 8
|
|
|
|
#define PHHNTLC_MAXIMUM 9
|
|
|
|
typedef struct _PH_HANDLE_NODE
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
|
|
PH_SH_STATE ShState;
|
|
|
|
HANDLE Handle;
|
|
PPH_HANDLE_ITEM HandleItem;
|
|
|
|
PH_STRINGREF TextCache[PHHNTLC_MAXIMUM];
|
|
|
|
PPH_STRING GrantedAccessSymbolicText;
|
|
WCHAR FileShareAccessText[4];
|
|
} PH_HANDLE_NODE, *PPH_HANDLE_NODE;
|
|
|
|
typedef struct _PH_HANDLE_LIST_CONTEXT
|
|
{
|
|
HWND ParentWindowHandle;
|
|
HWND TreeNewHandle;
|
|
ULONG TreeNewSortColumn;
|
|
PH_SORT_ORDER TreeNewSortOrder;
|
|
PH_CM_MANAGER Cm;
|
|
BOOLEAN HideUnnamedHandles;
|
|
|
|
PPH_HASHTABLE NodeHashtable;
|
|
PPH_LIST NodeList;
|
|
|
|
BOOLEAN EnableStateHighlighting;
|
|
PPH_POINTER_LIST NodeStateList;
|
|
} PH_HANDLE_LIST_CONTEXT, *PPH_HANDLE_LIST_CONTEXT;
|
|
|
|
VOID PhInitializeHandleList(
|
|
_In_ HWND ParentWindowHandle,
|
|
_In_ HWND TreeNewHandle,
|
|
_In_ PPH_PROCESS_ITEM ProcessItem,
|
|
_Out_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhDeleteHandleList(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhLoadSettingsHandleList(
|
|
_Inout_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhSaveSettingsHandleList(
|
|
_Inout_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhSetOptionsHandleList(
|
|
_Inout_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_In_ BOOLEAN HideUnnamedHandles
|
|
);
|
|
|
|
PPH_HANDLE_NODE PhAddHandleNode(
|
|
_Inout_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_In_ PPH_HANDLE_ITEM HandleItem,
|
|
_In_ ULONG RunId
|
|
);
|
|
|
|
PPH_HANDLE_NODE PhFindHandleNode(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_In_ HANDLE Handle
|
|
);
|
|
|
|
VOID PhRemoveHandleNode(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_In_ PPH_HANDLE_NODE HandleNode
|
|
);
|
|
|
|
VOID PhUpdateHandleNode(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_In_ PPH_HANDLE_NODE HandleNode
|
|
);
|
|
|
|
VOID PhTickHandleNodes(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
PPH_HANDLE_ITEM PhGetSelectedHandleItem(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
VOID PhGetSelectedHandleItems(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context,
|
|
_Out_ PPH_HANDLE_ITEM **Handles,
|
|
_Out_ PULONG NumberOfHandles
|
|
);
|
|
|
|
VOID PhDeselectAllHandleNodes(
|
|
_In_ PPH_HANDLE_LIST_CONTEXT Context
|
|
);
|
|
|
|
#endif
|