/* * ReactOS Task Manager * * perfdata.h * * Copyright (C) 1999 - 2001 Brian Palmer * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 */