| /* |
| * 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 |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| #if 0 |
| typedef struct _TIME { |
| DWORD LowPart; |
| LONG HighPart; |
| } TIME, *PTIME; |
| #endif |
| |
| typedef ULARGE_INTEGER TIME, *PTIME; |
| |
| /* typedef WCHAR UNICODE_STRING; */ |
| typedef struct _UNICODE_STRING { |
| USHORT Length; |
| USHORT MaximumLength; |
| PWSTR Buffer; |
| } UNICODE_STRING, *PUNICODE_STRING; |
| |
| typedef struct _PERFDATA |
| { |
| WCHAR ImageName[MAX_PATH]; |
| ULONG ProcessId; |
| WCHAR UserName[MAX_PATH]; |
| ULONG SessionId; |
| ULONG CPUUsage; |
| TIME CPUTime; |
| ULONG WorkingSetSizeBytes; |
| ULONG PeakWorkingSetSizeBytes; |
| ULONG WorkingSetSizeDelta; |
| ULONG PageFaultCount; |
| ULONG PageFaultCountDelta; |
| ULONG VirtualMemorySizeBytes; |
| ULONG PagedPoolUsagePages; |
| ULONG NonPagedPoolUsagePages; |
| ULONG BasePriority; |
| ULONG HandleCount; |
| ULONG ThreadCount; |
| ULONG USERObjectCount; |
| ULONG GDIObjectCount; |
| IO_COUNTERS IOCounters; |
| |
| TIME UserTime; |
| TIME KernelTime; |
| } PERFDATA, *PPERFDATA; |
| |
| typedef struct _CLIENT_ID |
| { |
| HANDLE UniqueProcess; |
| HANDLE UniqueThread; |
| } CLIENT_ID, *PCLIENT_ID; |
| |
| typedef enum _KWAIT_REASON |
| { |
| Executive, |
| FreePage, |
| PageIn, |
| PoolAllocation, |
| DelayExecution, |
| Suspended, |
| UserRequest, |
| WrExecutive, |
| WrFreePage, |
| WrPageIn, |
| WrDelayExecution, |
| WrSuspended, |
| WrUserRequest, |
| WrQueue, |
| WrLpcReceive, |
| WrLpcReply, |
| WrVirtualMemory, |
| WrPageOut, |
| WrRendezvous, |
| Spare2, |
| Spare3, |
| Spare4, |
| Spare5, |
| Spare6, |
| WrKernel, |
| MaximumWaitReason, |
| } KWAIT_REASON; |
| |
| /* SystemProcessThreadInfo (5) */ |
| typedef struct _SYSTEM_THREAD_INFORMATION |
| { |
| TIME KernelTime; |
| TIME UserTime; |
| TIME CreateTime; |
| ULONG TickCount; |
| ULONG StartEIP; |
| CLIENT_ID ClientId; |
| ULONG DynamicPriority; |
| ULONG BasePriority; |
| ULONG nSwitches; |
| DWORD State; |
| KWAIT_REASON WaitReason; |
| |
| } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; |
| |
| typedef struct SYSTEM_PROCESS_INFORMATION |
| { |
| ULONG RelativeOffset; |
| ULONG ThreadCount; |
| ULONG Unused1 [6]; |
| TIME CreateTime; |
| TIME UserTime; |
| TIME KernelTime; |
| UNICODE_STRING Name; |
| ULONG BasePriority; |
| ULONG ProcessId; |
| ULONG ParentProcessId; |
| ULONG HandleCount; |
| ULONG SessionId; |
| ULONG Unused2; |
| ULONG PeakVirtualSizeBytes; |
| ULONG TotalVirtualSizeBytes; |
| ULONG PageFaultCount; |
| ULONG PeakWorkingSetSizeBytes; |
| ULONG TotalWorkingSetSizeBytes; |
| ULONG PeakPagedPoolUsagePages; |
| ULONG TotalPagedPoolUsagePages; |
| ULONG PeakNonPagedPoolUsagePages; |
| ULONG TotalNonPagedPoolUsagePages; |
| ULONG TotalPageFileUsageBytes; |
| ULONG PeakPageFileUsageBytes; |
| ULONG TotalPrivateBytes; |
| SYSTEM_THREAD_INFORMATION ThreadSysInfo [1]; |
| |
| } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; |
| |
| typedef struct |
| { |
| DWORD dwUnknown1; |
| ULONG uKeMaximumIncrement; |
| ULONG uPageSize; |
| ULONG uMmNumberOfPhysicalPages; |
| ULONG uMmLowestPhysicalPage; |
| ULONG uMmHighestPhysicalPage; |
| ULONG uAllocationGranularity; |
| PVOID pLowestUserAddress; |
| PVOID pMmHighestUserAddress; |
| ULONG uKeActiveProcessors; |
| BYTE bKeNumberProcessors; |
| BYTE bUnknown2; |
| WORD wUnknown3; |
| } SYSTEM_BASIC_INFORMATION; |
| |
| /* SystemPerformanceInfo (2) */ |
| typedef struct _SYSTEM_PERFORMANCE_INFORMATION |
| { |
| LARGE_INTEGER /*TotalProcessorTime*/liIdleTime; |
| LARGE_INTEGER IoReadTransferCount; |
| LARGE_INTEGER IoWriteTransferCount; |
| LARGE_INTEGER IoOtherTransferCount; |
| ULONG IoReadOperationCount; |
| ULONG IoWriteOperationCount; |
| ULONG IoOtherOperationCount; |
| ULONG MmAvailablePages; |
| ULONG MmTotalCommitedPages; |
| ULONG MmTotalCommitLimit; |
| ULONG MmPeakLimit; |
| ULONG PageFaults; |
| ULONG WriteCopies; |
| ULONG TransitionFaults; |
| ULONG Unknown1; |
| ULONG DemandZeroFaults; |
| ULONG PagesInput; |
| ULONG PagesRead; |
| ULONG Unknown2; |
| ULONG Unknown3; |
| ULONG PagesOutput; |
| ULONG PageWrites; |
| ULONG Unknown4; |
| ULONG Unknown5; |
| ULONG PoolPagedBytes; |
| ULONG PoolNonPagedBytes; |
| ULONG Unknown6; |
| ULONG Unknown7; |
| ULONG Unknown8; |
| ULONG Unknown9; |
| ULONG MmTotalSystemFreePtes; |
| ULONG MmSystemCodepage; |
| ULONG MmTotalSystemDriverPages; |
| ULONG MmTotalSystemCodePages; |
| ULONG Unknown10; |
| ULONG Unknown11; |
| ULONG Unknown12; |
| ULONG MmSystemCachePage; |
| ULONG MmPagedPoolPage; |
| ULONG MmSystemDriverPage; |
| ULONG CcFastReadNoWait; |
| ULONG CcFastReadWait; |
| ULONG CcFastReadResourceMiss; |
| ULONG CcFastReadNotPossible; |
| ULONG CcFastMdlReadNoWait; |
| ULONG CcFastMdlReadWait; |
| ULONG CcFastMdlReadResourceMiss; |
| ULONG CcFastMdlReadNotPossible; |
| ULONG CcMapDataNoWait; |
| ULONG CcMapDataWait; |
| ULONG CcMapDataNoWaitMiss; |
| ULONG CcMapDataWaitMiss; |
| ULONG CcPinMappedDataCount; |
| ULONG CcPinReadNoWait; |
| ULONG CcPinReadWait; |
| ULONG CcPinReadNoWaitMiss; |
| ULONG CcPinReadWaitMiss; |
| ULONG CcCopyReadNoWait; |
| ULONG CcCopyReadWait; |
| ULONG CcCopyReadNoWaitMiss; |
| ULONG CcCopyReadWaitMiss; |
| ULONG CcMdlReadNoWait; |
| ULONG CcMdlReadWait; |
| ULONG CcMdlReadNoWaitMiss; |
| ULONG CcMdlReadWaitMiss; |
| ULONG CcReadaheadIos; |
| ULONG CcLazyWriteIos; |
| ULONG CcLazyWritePages; |
| ULONG CcDataFlushes; |
| ULONG CcDataPages; |
| ULONG ContextSwitches; |
| ULONG Unknown13; |
| ULONG Unknown14; |
| ULONG SystemCalls; |
| |
| } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; |
| |
| typedef struct |
| { |
| LARGE_INTEGER liKeBootTime; |
| LARGE_INTEGER liKeSystemTime; |
| LARGE_INTEGER liExpTimeZoneBias; |
| ULONG uCurrentTimeZoneId; |
| DWORD dwReserved; |
| } SYSTEM_TIME_INFORMATION; |
| |
| /* SystemCacheInformation (21) */ |
| typedef struct _SYSTEM_CACHE_INFORMATION |
| { |
| ULONG CurrentSize; |
| ULONG PeakSize; |
| ULONG PageFaultCount; |
| ULONG MinimumWorkingSet; |
| ULONG MaximumWorkingSet; |
| ULONG Unused[4]; |
| |
| } SYSTEM_CACHE_INFORMATION; |
| |
| /* SystemPageFileInformation (18) */ |
| typedef |
| struct _SYSTEM_PAGEFILE_INFORMATION |
| { |
| ULONG RelativeOffset; |
| ULONG CurrentSizePages; |
| ULONG TotalUsedPages; |
| ULONG PeakUsedPages; |
| UNICODE_STRING PagefileFileName; |
| |
| } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; |
| |
| /* SystemHandleInformation (16) */ |
| /* (see ontypes.h) */ |
| typedef |
| struct _SYSTEM_HANDLE_ENTRY |
| { |
| ULONG OwnerPid; |
| BYTE ObjectType; |
| BYTE HandleFlags; |
| USHORT HandleValue; |
| PVOID ObjectPointer; |
| ULONG AccessMask; |
| |
| } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY; |
| |
| typedef |
| struct _SYSTEM_HANDLE_INFORMATION |
| { |
| ULONG Count; |
| SYSTEM_HANDLE_ENTRY Handle [1]; |
| |
| } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; |
| |
| /* SystemProcessorPerformanceInformation (8) */ |
| typedef |
| struct _SYSTEM_PROCESSORTIME_INFO |
| { |
| LARGE_INTEGER IdleTime; |
| LARGE_INTEGER KernelTime; |
| LARGE_INTEGER UserTime; |
| LARGE_INTEGER DpcTime; |
| LARGE_INTEGER InterruptTime; |
| ULONG InterruptCount; |
| ULONG Unused; |
| |
| } SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO; |
| |
| #define SystemBasicInformation 0 |
| #define SystemPerformanceInformation 2 |
| #define SystemTimeInformation 3 |
| #define SystemProcessInformation 5 |
| #define SystemProcessorTimeInformation 8 |
| #define SystemHandleInformation 16 |
| #define SystemPageFileInformation 18 |
| #define SystemCacheInformation 21 |
| |
| #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); |
| |
| BOOL PerfDataInitialize(void); |
| void PerfDataUninitialize(void); |
| void PerfDataRefresh(void); |
| |
| ULONG PerfDataGetProcessCount(void); |
| ULONG PerfDataGetProcessorUsage(void); |
| ULONG PerfDataGetProcessorSystemUsage(void); |
| |
| BOOL PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount); |
| ULONG PerfDataGetProcessId(ULONG Index); |
| BOOL PerfDataGetUserName(ULONG Index, LPTSTR 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); |
| |
| |
| #ifdef __cplusplus |
| }; |
| #endif |
| |
| #endif /* __PERFDATA_H */ |