Reactos
1/*
2 * PROJECT: ReactOS Task Manager
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Performance Counters
5 * COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
6 * Copyright 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
7 */
8
9#pragma once
10
11#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
12
13typedef struct _PERFDATA
14{
15 WCHAR ImageName[MAX_PATH + _countof(L" *32") - 1];
16 HANDLE ProcessId;
17 WCHAR UserName[MAX_PATH];
18 ULONG SessionId;
19 ULONG CPUUsage;
20 LARGE_INTEGER CPUTime;
21 ULONG WorkingSetSizeBytes;
22 ULONG PeakWorkingSetSizeBytes;
23 ULONG WorkingSetSizeDelta;
24 ULONG PageFaultCount;
25 ULONG PageFaultCountDelta;
26 ULONG VirtualMemorySizeBytes;
27 ULONG PagedPoolUsagePages;
28 ULONG NonPagedPoolUsagePages;
29 ULONG BasePriority;
30 ULONG HandleCount;
31 ULONG ThreadCount;
32 ULONG USERObjectCount;
33 ULONG GDIObjectCount;
34 IO_COUNTERS IOCounters;
35
36 LARGE_INTEGER UserTime;
37 LARGE_INTEGER KernelTime;
38} PERFDATA, *PPERFDATA;
39
40typedef struct _CMD_LINE_CACHE
41{
42 DWORD idx;
43 LPWSTR str;
44 ULONG len;
45 struct _CMD_LINE_CACHE* pnext;
46} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
47
48BOOL PerfDataInitialize(void);
49void PerfDataUninitialize(void);
50void PerfDataRefresh(void);
51
52BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
53ULONG PerfDataGetProcessIndex(ULONG pid);
54ULONG PerfDataGetProcessCount(void);
55ULONG PerfDataGetProcessorUsage(void);
56ULONG PerfDataGetProcessorSystemUsage(void);
57
58BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount);
59ULONG PerfDataGetProcessId(ULONG Index);
60BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount);
61
62BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount);
63void PerfDataDeallocCommandLineCache();
64
65ULONG PerfDataGetSessionId(ULONG Index);
66ULONG PerfDataGetCPUUsage(ULONG Index);
67LARGE_INTEGER PerfDataGetCPUTime(ULONG Index);
68ULONG PerfDataGetWorkingSetSizeBytes(ULONG Index);
69ULONG PerfDataGetPeakWorkingSetSizeBytes(ULONG Index);
70ULONG PerfDataGetWorkingSetSizeDelta(ULONG Index);
71ULONG PerfDataGetPageFaultCount(ULONG Index);
72ULONG PerfDataGetPageFaultCountDelta(ULONG Index);
73ULONG PerfDataGetVirtualMemorySizeBytes(ULONG Index);
74ULONG PerfDataGetPagedPoolUsagePages(ULONG Index);
75ULONG PerfDataGetNonPagedPoolUsagePages(ULONG Index);
76ULONG PerfDataGetBasePriority(ULONG Index);
77ULONG PerfDataGetHandleCount(ULONG Index);
78ULONG PerfDataGetThreadCount(ULONG Index);
79ULONG PerfDataGetUSERObjectCount(ULONG Index);
80ULONG PerfDataGetGDIObjectCount(ULONG Index);
81BOOL PerfDataGetIOCounters(ULONG Index, PIO_COUNTERS pIoCounters);
82
83ULONG PerfDataGetCommitChargeTotalK(void);
84ULONG PerfDataGetCommitChargeLimitK(void);
85ULONG PerfDataGetCommitChargePeakK(void);
86
87ULONG PerfDataGetKernelMemoryTotalK(void);
88ULONG PerfDataGetKernelMemoryPagedK(void);
89ULONG PerfDataGetKernelMemoryNonPagedK(void);
90
91ULONG PerfDataGetPhysicalMemoryTotalK(void);
92ULONG PerfDataGetPhysicalMemoryAvailableK(void);
93ULONG PerfDataGetPhysicalMemorySystemCacheK(void);
94
95ULONG PerfDataGetSystemHandleCount(void);
96
97ULONG PerfDataGetTotalThreadCount(void);