-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtaskmgr.h
289 lines (237 loc) · 7.41 KB
/
taskmgr.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
//+-------------------------------------------------------------------------
//
// TaskMan - NT TaskManager
// Copyright (C) Microsoft
//
// File: TaskMan.H
//
// History: Nov-10-95 DavePl Created
// Jun-30-98 Alhen Adding code for TerminalServer
//
//--------------------------------------------------------------------------
#pragma once
#define WM_FINDPROC (WM_USER + 1)
#define PM_NOTIFYWAITING (WM_USER + 2)
#define PM_QUITTRAYTHREAD (WM_USER + 3)
#define PM_INITIALIZEICONS (WM_USER + 4)
extern DWORD g_idTrayThread;
extern LONG g_minWidth;
extern LONG g_minHeight;
extern BOOL g_fIsTSEnabled;
extern BOOL g_fIsSingleUserTS;
extern BOOL g_fIsTSServer;
extern DWORD g_dwMySessionId;
extern int g_nPages;
DWORD TrayThreadMessageLoop(LPVOID);
#define TASK_PAGE 0
#define PROC_PAGE 1
#define PERF_PAGE 2
#define NET_PAGE 3
#define USER_PAGE 4
#define NUM_PAGES 5
#define SHORTSTRLEN 32
#define MIN_DLG_SIZE_X 203
#define MIN_DLG_SIZE_Y 224
#define DLG_SCALE_X 4
#define DLG_SCALE_Y 8
//
// Process Page Column ID enumeration
//
typedef enum COLUMNID
{
COL_IMAGENAME = 0,
COL_PID = 1,
// _HYDRA
COL_USERNAME = 2,
COL_SESSIONID = 3,
//
COL_CPU = 4,
COL_CPUTIME = 5,
COL_MEMUSAGE = 6,
COL_MEMPEAK = 7,
COL_MEMUSAGEDIFF = 8,
COL_PAGEFAULTS = 9,
COL_PAGEFAULTSDIFF = 10,
COL_COMMITCHARGE = 11,
COL_PAGEDPOOL = 12,
COL_NONPAGEDPOOL = 13,
COL_BASEPRIORITY = 14,
COL_HANDLECOUNT = 15,
COL_THREADCOUNT = 16,
COL_USEROBJECTS = 17,
COL_GDIOBJECTS = 18,
COL_READOPERCOUNT = 19,
COL_WRITEOPERCOUNT = 20,
COL_OTHEROPERCOUNT = 21,
COL_READXFERCOUNT = 22,
COL_WRITEXFERCOUNT = 23,
COL_OTHERXFERCOUNT = 24,
COL_COMMANDLINE = 25
};
typedef enum NETCOLUMNID
{
COL_ADAPTERNAME = 0,
COL_ADAPTERDESC = 1,
COL_NETWORKUTIL = 2,
COL_LINKSPEED = 3,
COL_STATE = 4,
COL_BYTESSENTTHRU = 5,
COL_BYTESRECTHRU = 6,
COL_BYTESTOTALTHRU = 7,
COL_BYTESSENT = 8,
COL_BYTESREC = 9,
COL_BYTESTOTAL = 10,
COL_BYTESSENTPERINTER = 11,
COL_BYTESRECPERINTER = 12,
COL_BYTESTOTALPERINTER = 13,
COL_UNICASTSSSENT = 14,
COL_UNICASTSREC = 15,
COL_UNICASTSTOTAL = 16,
COL_UNICASTSSENTPERINTER = 17,
COL_UNICASTSRECPERINTER = 18,
COL_UNICASTSTOTALPERINTER = 19,
COL_NONUNICASTSSSENT = 20,
COL_NONUNICASTSREC = 21,
COL_NONUNICASTSTOTAL = 22,
COL_NONUNICASTSSENTPERINTER = 23,
COL_NONUNICASTSRECPERINTER = 24,
COL_NONUNICASTSTOTALPERINTER = 25
};
#define MAX_COLUMN 25
#define NUM_COLUMN (MAX_COLUMN + 1)
#define NUM_NETCOLUMN 26
#define IDS_FIRSTCOL 20001 // 20000 is first column name ID in rc file
// GetLastHRESULT
//
// Little wrapper func that returns the GetLastError value as an HRESULT
inline HRESULT GetLastHRESULT()
{
return HRESULT_FROM_WIN32(GetLastError());
}
// Possible values for the viewmode
typedef enum
{
VM_LARGEICON,
VM_SMALLICON,
VM_DETAILS,
VM_INVALID
} VIEWMODE;
#define VM_FIRST IDM_LARGEICONS
#define VM_LAST IDM_DETAILS
// Possible values for the cpu history mode
typedef enum
{
CM_SUM,
CM_PANES
} CPUHISTMODE;
#define CM_FIRST IDM_ALLCPUS
#define CM_LAST IDM_MULTIGRAPH
// Possible values for the memory history mode
typedef enum
{
MM_PHYSICAL,
MM_COMMITTED
} MEMHISTMODE;
#define MM_FIRST IDM_PHYSMEM
#define MM_LAST IDM_COMMITTED
// Possible values for the update speed option
typedef enum
{
US_HIGH,
US_NORMAL,
US_LOW,
US_PAUSED,
US_CUSTOM,
} UPDATESPEED;
#define US_FIRST IDM_HIGH
#define US_LAST IDM_CUSTOM
// PtrToFns for RPC calls
typedef BOOLEAN ( WINAPI *pfnWinStationGetProcessSid )( HANDLE hServer, DWORD ProcessId , FILETIME ProcessStartTime , PBYTE pProcessUserSid , PDWORD dwSidSize );
typedef void ( WINAPI *pfnCachedGetUserFromSid )( PSID pSid , PWCHAR pUserName , PULONG cbUserName );
typedef BOOLEAN (WINAPI *pfnWinStationTerminateProcess)( HANDLE hServer, ULONG ProcessId, ULONG ExitCode);
typedef BOOLEAN (WINAPI *pfnWinStationDisconnect) ( HANDLE hServer, ULONG SessionId, BOOL bWait );
extern pfnWinStationGetProcessSid gpfnWinStationGetProcessSid;
extern pfnCachedGetUserFromSid gpfnCachedGetUserFromSid;
// COptions
//
// App's persistent state across sessions, saved in the registry
class COptions
{
public:
DWORD m_cbSize;
DWORD m_dwTimerInterval;
VIEWMODE m_vmViewMode;
CPUHISTMODE m_cmHistMode;
UPDATESPEED m_usUpdateSpeed;
RECT m_rcWindow;
INT m_iCurrentPage;
NETCOLUMNID m_ActiveNetCol[NUM_NETCOLUMN + 1];
SHORT m_NetColumnWidths[NUM_NETCOLUMN + 1];
INT m_NetColumnPositions[NUM_NETCOLUMN + 1];
BOOL m_bAutoSize;
BOOL m_bGraphBytesSent;
BOOL m_bGraphBytesReceived;
BOOL m_bGraphBytesTotal;
BOOL m_bNetShowAll;
BOOL m_bShowScale;
BOOL m_bTabAlwaysActive;
COLUMNID m_ActiveProcCol[NUM_COLUMN + 1];
INT m_ColumnWidths[NUM_COLUMN + 1];
INT m_ColumnPositions[NUM_COLUMN + 1];
BOOL m_fMinimizeOnUse : 1;
BOOL m_fConfirmations : 1;
BOOL m_fAlwaysOnTop : 1;
BOOL m_fKernelTimes : 1;
BOOL m_fNoTitle : 1;
BOOL m_fHideWhenMin : 1;
BOOL m_fShow16Bit : 1;
BOOL m_fShowDomainNames : 1;
BOOL bUnused;
BOOL bUnused2;
BOOL m_bShowAllProcess;
BOOL m_bShutdownMenu;
MEMHISTMODE m_mmHistMode;
BOOL m_bLedNumbers;
HRESULT Load();
HRESULT Save();
void SetDefaultValues();
COptions()
{
SetDefaultValues();
}
};
// CTrayNotification
//
// Class to encapsulate all of the info needed to do a tray notification
class CTrayNotification
{
private:
CTrayNotification(void); // make the constructor private to prevent access
public:
CTrayNotification(HWND hWnd,
UINT uCallbackMessage,
DWORD Message,
HICON hIcon,
LPTSTR pszTip)
{
m_hWnd = hWnd;
m_uCallbackMessage = uCallbackMessage;
m_Message = Message;
m_hIcon = hIcon;
if ( NULL != pszTip )
{
StringCchCopy( m_szTip, ARRAYSIZE(m_szTip), pszTip );
}
else
{
m_szTip[0] = TEXT('\0');
}
}
HWND m_hWnd;
UINT m_uCallbackMessage;
DWORD m_Message;
HICON m_hIcon;
WCHAR m_szTip[MAX_PATH];
};
void AdjustMenuBar(HMENU hMenu);
int Compare64(unsigned __int64 First, unsigned __int64 Second);