[HAL]
[reactos.git] / reactos / base / applications / taskmgr / perfdata.h
1 /*
2 * ReactOS Task Manager
3 *
4 * perfdata.h
5 *
6 * Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23 #pragma once
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
30
31 typedef struct _PERFDATA
32 {
33 WCHAR ImageName[MAX_PATH];
34 HANDLE ProcessId;
35 WCHAR UserName[MAX_PATH];
36 ULONG SessionId;
37 ULONG CPUUsage;
38 LARGE_INTEGER CPUTime;
39 ULONG WorkingSetSizeBytes;
40 ULONG PeakWorkingSetSizeBytes;
41 ULONG WorkingSetSizeDelta;
42 ULONG PageFaultCount;
43 ULONG PageFaultCountDelta;
44 ULONG VirtualMemorySizeBytes;
45 ULONG PagedPoolUsagePages;
46 ULONG NonPagedPoolUsagePages;
47 ULONG BasePriority;
48 ULONG HandleCount;
49 ULONG ThreadCount;
50 ULONG USERObjectCount;
51 ULONG GDIObjectCount;
52 IO_COUNTERS IOCounters;
53
54 LARGE_INTEGER UserTime;
55 LARGE_INTEGER KernelTime;
56 } PERFDATA, *PPERFDATA;
57
58 BOOL PerfDataInitialize(void);
59 void PerfDataUninitialize(void);
60 void PerfDataRefresh(void);
61
62 BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
63 ULONG PerfDataGetProcessCount(void);
64 ULONG PerfDataGetProcessorUsage(void);
65 ULONG PerfDataGetProcessorSystemUsage(void);
66
67 BOOL PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount);
68 ULONG PerfDataGetProcessId(ULONG Index);
69 BOOL PerfDataGetUserName(ULONG Index, LPTSTR lpUserName, int nMaxCount);
70 ULONG PerfDataGetSessionId(ULONG Index);
71 ULONG PerfDataGetCPUUsage(ULONG Index);
72 LARGE_INTEGER PerfDataGetCPUTime(ULONG Index);
73 ULONG PerfDataGetWorkingSetSizeBytes(ULONG Index);
74 ULONG PerfDataGetPeakWorkingSetSizeBytes(ULONG Index);
75 ULONG PerfDataGetWorkingSetSizeDelta(ULONG Index);
76 ULONG PerfDataGetPageFaultCount(ULONG Index);
77 ULONG PerfDataGetPageFaultCountDelta(ULONG Index);
78 ULONG PerfDataGetVirtualMemorySizeBytes(ULONG Index);
79 ULONG PerfDataGetPagedPoolUsagePages(ULONG Index);
80 ULONG PerfDataGetNonPagedPoolUsagePages(ULONG Index);
81 ULONG PerfDataGetBasePriority(ULONG Index);
82 ULONG PerfDataGetHandleCount(ULONG Index);
83 ULONG PerfDataGetThreadCount(ULONG Index);
84 ULONG PerfDataGetUSERObjectCount(ULONG Index);
85 ULONG PerfDataGetGDIObjectCount(ULONG Index);
86 BOOL PerfDataGetIOCounters(ULONG Index, PIO_COUNTERS pIoCounters);
87
88 ULONG PerfDataGetCommitChargeTotalK(void);
89 ULONG PerfDataGetCommitChargeLimitK(void);
90 ULONG PerfDataGetCommitChargePeakK(void);
91
92 ULONG PerfDataGetKernelMemoryTotalK(void);
93 ULONG PerfDataGetKernelMemoryPagedK(void);
94 ULONG PerfDataGetKernelMemoryNonPagedK(void);
95
96 ULONG PerfDataGetPhysicalMemoryTotalK(void);
97 ULONG PerfDataGetPhysicalMemoryAvailableK(void);
98 ULONG PerfDataGetPhysicalMemorySystemCacheK(void);
99
100 ULONG PerfDataGetSystemHandleCount(void);
101
102 ULONG PerfDataGetTotalThreadCount(void);
103
104
105 #ifdef __cplusplus
106 };
107 #endif