/* * ReactOS Task Manager * * perfdata.h * * Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __PERFDATA_H #define __PERFDATA_H #include "winternl.h" typedef ULARGE_INTEGER TIME; typedef struct _PERFDATA { WCHAR ImageName[MAX_PATH]; ULONG ProcessId; WCHAR UserName[MAX_PATH]; ULONG SessionId; ULONG CPUUsage; TIME CPUTime; ULONG BasePriority; ULONG HandleCount; ULONG ThreadCount; ULONG USERObjectCount; ULONG GDIObjectCount; SIZE_T WorkingSetSizeDelta; ULONG PageFaultCountDelta; VM_COUNTERS vmCounters; IO_COUNTERS IOCounters; TIME UserTime; TIME KernelTime; BOOL Wow64Process; } PERFDATA, *PPERFDATA; /* SystemPageFileInformation (18) */ typedef struct _SYSTEM_PAGEFILE_INFORMATION { ULONG RelativeOffset; ULONG CurrentSizePages; ULONG TotalUsedPages; ULONG PeakUsedPages; UNICODE_STRING PagefileFileName; } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; #define Li2Double(x) ((double)((x).QuadPart)) #define GR_GDIOBJECTS 0 /* Count of GDI objects */ #define GR_USEROBJECTS 1 /* Count of USER objects */ typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG); typedef DWORD (WINAPI *PROCGGR)(HANDLE,DWORD); typedef BOOL (WINAPI *PROCGPIC)(HANDLE,PIO_COUNTERS); typedef BOOL (WINAPI *PROCISW64)(HANDLE,PBOOL); BOOL PerfDataInitialize(void); void PerfDataRefresh(void); ULONG PerfDataGetProcessCount(void); ULONG PerfDataGetProcessorUsage(void); ULONG PerfDataGetProcessorSystemUsage(void); BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, int nMaxCount); ULONG PerfDataGetProcessId(ULONG Index); BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount); ULONG PerfDataGetSessionId(ULONG Index); ULONG PerfDataGetCPUUsage(ULONG Index); TIME PerfDataGetCPUTime(ULONG Index); ULONG PerfDataGetWorkingSetSizeBytes(ULONG Index); ULONG PerfDataGetPeakWorkingSetSizeBytes(ULONG Index); ULONG PerfDataGetWorkingSetSizeDelta(ULONG Index); ULONG PerfDataGetPageFaultCount(ULONG Index); ULONG PerfDataGetPageFaultCountDelta(ULONG Index); ULONG PerfDataGetVirtualMemorySizeBytes(ULONG Index); ULONG PerfDataGetPagedPoolUsagePages(ULONG Index); ULONG PerfDataGetNonPagedPoolUsagePages(ULONG Index); ULONG PerfDataGetBasePriority(ULONG Index); ULONG PerfDataGetHandleCount(ULONG Index); ULONG PerfDataGetThreadCount(ULONG Index); ULONG PerfDataGetUSERObjectCount(ULONG Index); ULONG PerfDataGetGDIObjectCount(ULONG Index); BOOL PerfDataGetIOCounters(ULONG Index, PIO_COUNTERS pIoCounters); ULONG PerfDataGetCommitChargeTotalK(void); ULONG PerfDataGetCommitChargeLimitK(void); ULONG PerfDataGetCommitChargePeakK(void); ULONG PerfDataGetKernelMemoryTotalK(void); ULONG PerfDataGetKernelMemoryPagedK(void); ULONG PerfDataGetKernelMemoryNonPagedK(void); ULONG PerfDataGetPhysicalMemoryTotalK(void); ULONG PerfDataGetPhysicalMemoryAvailableK(void); ULONG PerfDataGetPhysicalMemorySystemCacheK(void); ULONG PerfDataGetSystemHandleCount(void); ULONG PerfDataGetTotalThreadCount(void); #endif /* __PERFDATA_H */