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 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart)) 16 17 typedef struct _PERFDATA 18 { 19 WCHAR ImageName[MAX_PATH]; 20 HANDLE ProcessId; 21 WCHAR UserName[MAX_PATH]; 22 ULONG SessionId; 23 ULONG CPUUsage; 24 LARGE_INTEGER CPUTime; 25 ULONG WorkingSetSizeBytes; 26 ULONG PeakWorkingSetSizeBytes; 27 ULONG WorkingSetSizeDelta; 28 ULONG PageFaultCount; 29 ULONG PageFaultCountDelta; 30 ULONG VirtualMemorySizeBytes; 31 ULONG PagedPoolUsagePages; 32 ULONG NonPagedPoolUsagePages; 33 ULONG BasePriority; 34 ULONG HandleCount; 35 ULONG ThreadCount; 36 ULONG USERObjectCount; 37 ULONG GDIObjectCount; 38 IO_COUNTERS IOCounters; 39 40 LARGE_INTEGER UserTime; 41 LARGE_INTEGER KernelTime; 42 } PERFDATA, *PPERFDATA; 43 44 typedef struct _CMD_LINE_CACHE 45 { 46 DWORD idx; 47 LPWSTR str; 48 ULONG len; 49 struct _CMD_LINE_CACHE* pnext; 50 } CMD_LINE_CACHE, *PCMD_LINE_CACHE; 51 52 BOOL PerfDataInitialize(void); 53 void PerfDataUninitialize(void); 54 void PerfDataRefresh(void); 55 56 BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData); 57 ULONG PerfDataGetProcessIndex(ULONG pid); 58 ULONG PerfDataGetProcessCount(void); 59 ULONG PerfDataGetProcessorUsage(void); 60 ULONG PerfDataGetProcessorSystemUsage(void); 61 62 BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount); 63 ULONG PerfDataGetProcessId(ULONG Index); 64 BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount); 65 66 BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount); 67 void PerfDataDeallocCommandLineCache(); 68 69 ULONG PerfDataGetSessionId(ULONG Index); 70 ULONG PerfDataGetCPUUsage(ULONG Index); 71 LARGE_INTEGER PerfDataGetCPUTime(ULONG Index); 72 ULONG PerfDataGetWorkingSetSizeBytes(ULONG Index); 73 ULONG PerfDataGetPeakWorkingSetSizeBytes(ULONG Index); 74 ULONG PerfDataGetWorkingSetSizeDelta(ULONG Index); 75 ULONG PerfDataGetPageFaultCount(ULONG Index); 76 ULONG PerfDataGetPageFaultCountDelta(ULONG Index); 77 ULONG PerfDataGetVirtualMemorySizeBytes(ULONG Index); 78 ULONG PerfDataGetPagedPoolUsagePages(ULONG Index); 79 ULONG PerfDataGetNonPagedPoolUsagePages(ULONG Index); 80 ULONG PerfDataGetBasePriority(ULONG Index); 81 ULONG PerfDataGetHandleCount(ULONG Index); 82 ULONG PerfDataGetThreadCount(ULONG Index); 83 ULONG PerfDataGetUSERObjectCount(ULONG Index); 84 ULONG PerfDataGetGDIObjectCount(ULONG Index); 85 BOOL PerfDataGetIOCounters(ULONG Index, PIO_COUNTERS pIoCounters); 86 87 ULONG PerfDataGetCommitChargeTotalK(void); 88 ULONG PerfDataGetCommitChargeLimitK(void); 89 ULONG PerfDataGetCommitChargePeakK(void); 90 91 ULONG PerfDataGetKernelMemoryTotalK(void); 92 ULONG PerfDataGetKernelMemoryPagedK(void); 93 ULONG PerfDataGetKernelMemoryNonPagedK(void); 94 95 ULONG PerfDataGetPhysicalMemoryTotalK(void); 96 ULONG PerfDataGetPhysicalMemoryAvailableK(void); 97 ULONG PerfDataGetPhysicalMemorySystemCacheK(void); 98 99 ULONG PerfDataGetSystemHandleCount(void); 100 101 ULONG PerfDataGetTotalThreadCount(void); 102 103 104 #ifdef __cplusplus 105 }; 106 #endif 107