Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

273 lines
7.4 KiB

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