New ctm version, supports killing of process, some bugfixes, increased speed of scrol...
[reactos.git] / rosapps / sysutils / ctm / ctm.h
1 /* Console Task Manager
2
3 ctm.h - header file for main program
4
5 Written by: Aleksey Bragin (aleksey@studiocerebral.com)
6
7 Most of this file content is taken from
8 ReactOS Task Manager written by Brian Palmer (brianp@reactos.org)
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
23
24 #ifndef TMTM_H
25 #define TMTM_H
26
27 // keys
28 /*
29 #define VK_Q 0x51
30 #define VK_K 0x4B
31 #define VK_Y 0x59
32 #define VK_LEFT 0x25
33 #define VK_UP 0x26
34 #define VK_RIGHT 0x27
35 #define VK_DOWN 0x28
36 */
37
38 //typedef ULARGE_INTEGER TIME, *PTIME;
39
40 /*
41
42 typedef struct _UNICODE_STRING {
43 USHORT Length;
44 USHORT MaximumLength;
45 PWSTR Buffer;
46 } UNICODE_STRING, *PUNICODE_STRING;
47
48 */
49
50 #define SystemBasicInformation 0
51 #define SystemPerformanceInformation 2
52 #define SystemTimeInformation 3
53 #define SystemProcessInformation 5
54 #define SystemProcessorTimeInformation 8
55 #define SystemHandleInformation 16
56 #define SystemPageFileInformation 18
57 #define SystemCacheInformation 21
58
59 #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
60
61 typedef struct _PERFDATA
62 {
63 WCHAR ImageName[MAX_PATH];
64 ULONG ProcessId;
65 WCHAR UserName[MAX_PATH];
66 ULONG SessionId;
67 ULONG CPUUsage;
68 TIME CPUTime;
69 ULONG WorkingSetSizeBytes;
70 ULONG PeakWorkingSetSizeBytes;
71 ULONG WorkingSetSizeDelta;
72 ULONG PageFaultCount;
73 ULONG PageFaultCountDelta;
74 ULONG VirtualMemorySizeBytes;
75 ULONG PagedPoolUsagePages;
76 ULONG NonPagedPoolUsagePages;
77 ULONG BasePriority;
78 ULONG HandleCount;
79 ULONG ThreadCount;
80 ULONG USERObjectCount;
81 ULONG GDIObjectCount;
82 //IO_COUNTERS IOCounters;
83
84 TIME UserTime;
85 TIME KernelTime;
86 } PERFDATA, *PPERFDATA;
87
88 typedef struct SYSTEM_PROCESS_INFORMATION
89 {
90 ULONG RelativeOffset;
91 ULONG ThreadCount;
92 ULONG Unused1 [6];
93 TIME CreateTime;
94 TIME UserTime;
95 TIME KernelTime;
96 UNICODE_STRING Name;
97 ULONG BasePriority;
98 ULONG ProcessId;
99 ULONG ParentProcessId;
100 ULONG HandleCount;
101 ULONG SessionId;
102 ULONG Unused2;
103 ULONG PeakVirtualSizeBytes;
104 ULONG TotalVirtualSizeBytes;
105 ULONG PageFaultCount;
106 ULONG PeakWorkingSetSizeBytes;
107 ULONG TotalWorkingSetSizeBytes;
108 ULONG PeakPagedPoolUsagePages;
109 ULONG TotalPagedPoolUsagePages;
110 ULONG PeakNonPagedPoolUsagePages;
111 ULONG TotalNonPagedPoolUsagePages;
112 ULONG TotalPageFileUsageBytes;
113 ULONG PeakPageFileUsageBytes;
114 ULONG TotalPrivateBytes;
115 //SYSTEM_THREAD_INFORMATION ThreadSysInfo [1];
116 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
117
118 /*
119 typedef
120 struct _SYSTEM_PROCESSORTIME_INFO
121 {
122 LARGE_INTEGER IdleTime;
123 LARGE_INTEGER KernelTime;
124 LARGE_INTEGER UserTime;
125 LARGE_INTEGER DpcTime;
126 LARGE_INTEGER InterruptTime;
127 ULONG InterruptCount;
128 ULONG Unused;
129
130 } SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO;
131 */
132
133
134 // SystemPerformanceInfo (2)
135 typedef struct SYSTEM_PERFORMANCE_INFORMATION
136 {
137 LARGE_INTEGER liIdleTime; //TotalProcessorTime
138 LARGE_INTEGER IoReadTransferCount;
139 LARGE_INTEGER IoWriteTransferCount;
140 LARGE_INTEGER IoOtherTransferCount;
141 ULONG IoReadOperationCount;
142 ULONG IoWriteOperationCount;
143 ULONG IoOtherOperationCount;
144 ULONG MmAvailablePages;
145 ULONG MmTotalCommitedPages;
146 ULONG MmTotalCommitLimit;
147 ULONG MmPeakLimit;
148 ULONG PageFaults;
149 ULONG WriteCopies;
150 ULONG TransitionFaults;
151 ULONG Unknown1;
152 ULONG DemandZeroFaults;
153 ULONG PagesInput;
154 ULONG PagesRead;
155 ULONG Unknown2;
156 ULONG Unknown3;
157 ULONG PagesOutput;
158 ULONG PageWrites;
159 ULONG Unknown4;
160 ULONG Unknown5;
161 ULONG PoolPagedBytes;
162 ULONG PoolNonPagedBytes;
163 ULONG Unknown6;
164 ULONG Unknown7;
165 ULONG Unknown8;
166 ULONG Unknown9;
167 ULONG MmTotalSystemFreePtes;
168 ULONG MmSystemCodepage;
169 ULONG MmTotalSystemDriverPages;
170 ULONG MmTotalSystemCodePages;
171 ULONG Unknown10;
172 ULONG Unknown11;
173 ULONG Unknown12;
174 ULONG MmSystemCachePage;
175 ULONG MmPagedPoolPage;
176 ULONG MmSystemDriverPage;
177 ULONG CcFastReadNoWait;
178 ULONG CcFastReadWait;
179 ULONG CcFastReadResourceMiss;
180 ULONG CcFastReadNotPossible;
181 ULONG CcFastMdlReadNoWait;
182 ULONG CcFastMdlReadWait;
183 ULONG CcFastMdlReadResourceMiss;
184 ULONG CcFastMdlReadNotPossible;
185 ULONG CcMapDataNoWait;
186 ULONG CcMapDataWait;
187 ULONG CcMapDataNoWaitMiss;
188 ULONG CcMapDataWaitMiss;
189 ULONG CcPinMappedDataCount;
190 ULONG CcPinReadNoWait;
191 ULONG CcPinReadWait;
192 ULONG CcPinReadNoWaitMiss;
193 ULONG CcPinReadWaitMiss;
194 ULONG CcCopyReadNoWait;
195 ULONG CcCopyReadWait;
196 ULONG CcCopyReadNoWaitMiss;
197 ULONG CcCopyReadWaitMiss;
198 ULONG CcMdlReadNoWait;
199 ULONG CcMdlReadWait;
200 ULONG CcMdlReadNoWaitMiss;
201 ULONG CcMdlReadWaitMiss;
202 ULONG CcReadaheadIos;
203 ULONG CcLazyWriteIos;
204 ULONG CcLazyWritePages;
205 ULONG CcDataFlushes;
206 ULONG CcDataPages;
207 ULONG ContextSwitches;
208 ULONG Unknown13;
209 ULONG Unknown14;
210 ULONG SystemCalls;
211
212 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
213
214
215 typedef struct
216 {
217 LARGE_INTEGER liKeBootTime;
218 LARGE_INTEGER liKeSystemTime;
219 LARGE_INTEGER liExpTimeZoneBias;
220 ULONG uCurrentTimeZoneId;
221 DWORD dwReserved;
222 } SYSTEM_TIME_INFORMATION;
223
224
225 // ntdll!NtQuerySystemInformation (NT specific!)
226 //
227 // The function copies the system information of the
228 // specified type into a buffer
229 //
230 // NTSYSAPI
231 // NTSTATUS
232 // NTAPI
233 // NtQuerySystemInformation(
234 // IN UINT SystemInformationClass, // information type
235 // OUT PVOID SystemInformation, // pointer to buffer
236 // IN ULONG SystemInformationLength, // buffer size in bytes
237 // OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit
238 // // variable that receives
239 // // the number of bytes
240 // // written to the buffer
241 // );
242 typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
243
244 #endif