home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / winnt / pviewer / pviewdat.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  10KB  |  298 lines

  1.  
  2. /******************************************************************************\
  3. *       This is a part of the Microsoft Source Code Samples. 
  4. *       Copyright (C) 1993-1997 Microsoft Corporation.
  5. *       All rights reserved. 
  6. *       This source code is only intended as a supplement to 
  7. *       Microsoft Development Tools and/or WinHelp documentation.
  8. *       See these sources for detailed information regarding the 
  9. *       Microsoft samples programs.
  10. \******************************************************************************/
  11.  
  12.  
  13. /******************************************************************************
  14.  
  15.                             P V I E W   D A T A
  16.  
  17.     Name:       pviewdat.h
  18.  
  19.     Description:
  20.         Prototypes of functions used in pviewdat.c
  21.  
  22. ******************************************************************************/
  23.  
  24.  
  25.  
  26.  
  27.  
  28. //******************************************************************************
  29. //
  30. //  Titles and indexes.
  31. //
  32. //  See GetPerfTitleSz() in perfdata.c on how to retrieve these data.
  33. //
  34. //  This is not complete, for complete listing
  35. //  see under hkey_local_system
  36. //               \software
  37. //                   \microsoft
  38. //                       \windows nt
  39. //                           \currentversion
  40. //                               \perflib
  41. //                                   \###
  42. //
  43.  
  44. #define PN_PROCESS                          TEXT("Process")
  45. #define PN_PROCESS_CPU                      TEXT("% Processor Time")
  46. #define PN_PROCESS_PRIV                     TEXT("% Privileged Time")
  47. #define PN_PROCESS_USER                     TEXT("% User Time")
  48. #define PN_PROCESS_WORKING_SET              TEXT("Working Set")
  49. #define PN_PROCESS_PEAK_WS                  TEXT("Working Set Peak")
  50. #define PN_PROCESS_PRIO                     TEXT("Priority Base")
  51. #define PN_PROCESS_ELAPSE                   TEXT("Elapsed Time")
  52. #define PN_PROCESS_ID                       TEXT("ID Process")
  53. #define PN_PROCESS_PRIVATE_PAGE             TEXT("Private Bytes")
  54. #define PN_PROCESS_VIRTUAL_SIZE             TEXT("Virtual Bytes")
  55. #define PN_PROCESS_PEAK_VS                  TEXT("Virtual Bytes Peak")
  56. #define PN_PROCESS_FAULT_COUNT              TEXT("Page Faults/sec")
  57.  
  58.  
  59. #define PN_THREAD                           TEXT("Thread")
  60. #define PN_THREAD_CPU                       TEXT("% Processor Time")
  61. #define PN_THREAD_PRIV                      TEXT("% Privileged Time")
  62. #define PN_THREAD_USER                      TEXT("% User Time")
  63. #define PN_THREAD_START                     TEXT("Start Address")
  64. #define PN_THREAD_SWITCHES                  TEXT("Context Switches/sec")
  65. #define PN_THREAD_PRIO                      TEXT("Priority Current")
  66. #define PN_THREAD_BASE_PRIO                 TEXT("Priority Base")
  67. #define PN_THREAD_ELAPSE                    TEXT("Elapsed Time")
  68.  
  69. #define PN_THREAD_DETAILS                   TEXT("Thread Details")
  70. #define PN_THREAD_PC                        TEXT("User PC")
  71.  
  72. #define PN_IMAGE                            TEXT("Image")
  73. #define PN_IMAGE_NOACCESS                   TEXT("No Access")
  74. #define PN_IMAGE_READONLY                   TEXT("Read Only")
  75. #define PN_IMAGE_READWRITE                  TEXT("Read/Write")
  76. #define PN_IMAGE_WRITECOPY                  TEXT("Write Copy")
  77. #define PN_IMAGE_EXECUTABLE                 TEXT("Executable")
  78. #define PN_IMAGE_EXE_READONLY               TEXT("Exec Read Only")
  79. #define PN_IMAGE_EXE_READWRITE              TEXT("Exec Read/Write")
  80. #define PN_IMAGE_EXE_WRITECOPY              TEXT("Exec Write Copy")
  81.  
  82.  
  83. #define PN_PROCESS_ADDRESS_SPACE            TEXT("Process Address Space")
  84. #define PN_PROCESS_PRIVATE_NOACCESS         TEXT("Reserved Space No Access")
  85. #define PN_PROCESS_PRIVATE_READONLY         TEXT("Reserved Space Read Only")
  86. #define PN_PROCESS_PRIVATE_READWRITE        TEXT("Reserved Space Read/Write")
  87. #define PN_PROCESS_PRIVATE_WRITECOPY        TEXT("Reserved Space Write Copy")
  88. #define PN_PROCESS_PRIVATE_EXECUTABLE       TEXT("Reserved Space Executable")
  89. #define PN_PROCESS_PRIVATE_EXE_READONLY     TEXT("Reserved Space Exec Read Only")
  90. #define PN_PROCESS_PRIVATE_EXE_READWRITE    TEXT("Reserved Space Exec Read/Write")
  91. #define PN_PROCESS_PRIVATE_EXE_WRITECOPY    TEXT("Reserved Space Exec Write Copy")
  92.  
  93.  
  94. #define PN_PROCESS_MAPPED_NOACCESS          TEXT("Mapped Space No Access")
  95. #define PN_PROCESS_MAPPED_READONLY          TEXT("Mapped Space Read Only")
  96. #define PN_PROCESS_MAPPED_READWRITE         TEXT("Mapped Space Read/Write")
  97. #define PN_PROCESS_MAPPED_WRITECOPY         TEXT("Mapped Space Write Copy")
  98. #define PN_PROCESS_MAPPED_EXECUTABLE        TEXT("Mapped Space Executable")
  99. #define PN_PROCESS_MAPPED_EXE_READONLY      TEXT("Mapped Space Exec Read Only")
  100. #define PN_PROCESS_MAPPED_EXE_READWRITE     TEXT("Mapped Space Exec Read/Write")
  101. #define PN_PROCESS_MAPPED_EXE_WRITECOPY     TEXT("Mapped Space Exec Write Copy")
  102.  
  103.  
  104. #define PN_PROCESS_IMAGE_NOACCESS           TEXT("Image Space No Access")
  105. #define PN_PROCESS_IMAGE_READONLY           TEXT("Image Space Read Only")
  106. #define PN_PROCESS_IMAGE_READWRITE          TEXT("Image Space Read/Write")
  107. #define PN_PROCESS_IMAGE_WRITECOPY          TEXT("Image Space Write Copy")
  108. #define PN_PROCESS_IMAGE_EXECUTABLE         TEXT("Image Space Executable")
  109. #define PN_PROCESS_IMAGE_EXE_READONLY       TEXT("Image Space Exec Read Only")
  110. #define PN_PROCESS_IMAGE_EXE_READWRITE      TEXT("Image Space Exec Read/Write")
  111. #define PN_PROCESS_IMAGE_EXE_WRITECOPY      TEXT("Image Space Exec Write Copy")
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119. DWORD   PX_PROCESS;
  120. DWORD   PX_PROCESS_CPU;
  121. DWORD   PX_PROCESS_PRIV;
  122. DWORD   PX_PROCESS_USER;
  123. DWORD   PX_PROCESS_WORKING_SET;
  124. DWORD   PX_PROCESS_PEAK_WS;
  125. DWORD   PX_PROCESS_PRIO;
  126. DWORD   PX_PROCESS_ELAPSE;
  127. DWORD   PX_PROCESS_ID;
  128. DWORD   PX_PROCESS_PRIVATE_PAGE;
  129. DWORD   PX_PROCESS_VIRTUAL_SIZE;
  130. DWORD   PX_PROCESS_PEAK_VS;
  131. DWORD   PX_PROCESS_FAULT_COUNT;
  132. DWORD   PX_PROCESS_PAGED_POOL_QUOTA;
  133. DWORD   PX_PROCESS_PEAK_PAGED_POOL_QUOTA;
  134. DWORD   PX_PROCESS_NONPAGED_POOL_QUOTA;
  135. DWORD   PX_PROCESS_PEAK_PAGED_POOL;
  136. DWORD   PX_PROCESS_PEAK_NONPAGED_POOL;
  137. DWORD   PX_PROCESS_CUR_PAGED_POOL;
  138. DWORD   PX_PROCESS_CUR_NONPAGED_POOL;
  139. DWORD   PX_PROCESS_PAGED_POOL_LIMIT;
  140. DWORD   PX_PROCESS_NONPAGED_POOL_LIMIT;
  141.  
  142.  
  143. DWORD   PX_THREAD;
  144. DWORD   PX_THREAD_CPU;
  145. DWORD   PX_THREAD_PRIV;
  146. DWORD   PX_THREAD_USER;
  147. DWORD   PX_THREAD_START;
  148. DWORD   PX_THREAD_SWITCHES;
  149. DWORD   PX_THREAD_PRIO;
  150. DWORD   PX_THREAD_BASE_PRIO;
  151. DWORD   PX_THREAD_ELAPSE;
  152.  
  153. DWORD   PX_THREAD_DETAILS;
  154. DWORD   PX_THREAD_PC;
  155.  
  156. DWORD   PX_IMAGE;
  157. DWORD   PX_IMAGE_NOACCESS;
  158. DWORD   PX_IMAGE_READONLY;
  159. DWORD   PX_IMAGE_READWRITE;
  160. DWORD   PX_IMAGE_WRITECOPY;
  161. DWORD   PX_IMAGE_EXECUTABLE;
  162. DWORD   PX_IMAGE_EXE_READONLY;
  163. DWORD   PX_IMAGE_EXE_READWRITE;
  164. DWORD   PX_IMAGE_EXE_WRITECOPY;
  165.  
  166.  
  167. DWORD   PX_PROCESS_ADDRESS_SPACE;
  168. DWORD   PX_PROCESS_PRIVATE_NOACCESS;
  169. DWORD   PX_PROCESS_PRIVATE_READONLY;
  170. DWORD   PX_PROCESS_PRIVATE_READWRITE;
  171. DWORD   PX_PROCESS_PRIVATE_WRITECOPY;
  172. DWORD   PX_PROCESS_PRIVATE_EXECUTABLE;
  173. DWORD   PX_PROCESS_PRIVATE_EXE_READONLY;
  174. DWORD   PX_PROCESS_PRIVATE_EXE_READWRITE;
  175. DWORD   PX_PROCESS_PRIVATE_EXE_WRITECOPY;
  176.  
  177.  
  178. DWORD   PX_PROCESS_MAPPED_NOACCESS;
  179. DWORD   PX_PROCESS_MAPPED_READONLY;
  180. DWORD   PX_PROCESS_MAPPED_READWRITE;
  181. DWORD   PX_PROCESS_MAPPED_WRITECOPY;
  182. DWORD   PX_PROCESS_MAPPED_EXECUTABLE;
  183. DWORD   PX_PROCESS_MAPPED_EXE_READONLY;
  184. DWORD   PX_PROCESS_MAPPED_EXE_READWRITE;
  185. DWORD   PX_PROCESS_MAPPED_EXE_WRITECOPY;
  186.  
  187.  
  188. DWORD   PX_PROCESS_IMAGE_NOACCESS;
  189. DWORD   PX_PROCESS_IMAGE_READONLY;
  190. DWORD   PX_PROCESS_IMAGE_READWRITE;
  191. DWORD   PX_PROCESS_IMAGE_WRITECOPY;
  192. DWORD   PX_PROCESS_IMAGE_EXECUTABLE;
  193. DWORD   PX_PROCESS_IMAGE_EXE_READONLY;
  194. DWORD   PX_PROCESS_IMAGE_EXE_READWRITE;
  195. DWORD   PX_PROCESS_IMAGE_EXE_WRITECOPY;
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215. typedef     struct _TIME_FIELD
  216.     TIME_FIELD,
  217.     *PTIME_FIELD;
  218.  
  219. struct _TIME_FIELD
  220.     {
  221.     INT     Hours;
  222.     INT     Mins;
  223.     INT     Secs;
  224.     INT     mSecs;
  225.     };
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234. void RefreshPviewDlgThreadPC
  235.            (HWND            hPviewDlg,
  236.             LPTSTR          szProcessName,
  237.             LPTSTR          szThreadName,
  238.             PPERF_OBJECT    pThreadDetailsObject,
  239.             PPERF_DATA      pCostlyData);
  240.  
  241.  
  242. BOOL RefreshMemoryDlg
  243.            (HWND            hMemDlg,
  244.             PPERF_INSTANCE  pProcessInstance,
  245.             PPERF_OBJECT    pProcessObject,
  246.             PPERF_OBJECT    pAddressObject,
  247.             PPERF_OBJECT    pImageObject);
  248.  
  249.  
  250. void RefreshMemoryDlgImage
  251.            (HWND           hMemDlg,
  252.             DWORD          dwIndex,
  253.             PPERF_OBJECT   pImageObject);
  254.  
  255.  
  256. void RefreshPviewDlgMemoryData
  257.            (HWND            hPviewDlg,
  258.             PPERF_INSTANCE  pProcessInstance,
  259.             PPERF_OBJECT    pProcessObject,
  260.             PPERF_OBJECT    pAddressObject);
  261.  
  262.  
  263. PPERF_DATA RefreshPerfData
  264.            (HKEY            hPerfKey,
  265.             LPTSTR          szObjectIndex,
  266.             PPERF_DATA      pData,
  267.             DWORD           *pDataSize);
  268.  
  269.  
  270. void RefreshProcessList
  271.            (HWND            hProcessList,
  272.             PPERF_OBJECT    pObject);
  273.  
  274.  
  275. void RefreshProcessData
  276.            (HWND             hWnd,
  277.             PPERF_OBJECT     pObject,
  278.             DWORD            ProcessIndex);
  279.  
  280.  
  281. void RefreshThreadList
  282.            (HWND             hThreadList,
  283.             PPERF_OBJECT     pObject,
  284.             DWORD            ParentIndex);
  285.  
  286.  
  287. void RefreshThreadData
  288.            (HWND             hWnd,
  289.             PPERF_OBJECT     pThreadObj,
  290.             DWORD            ThreadIndex,
  291.             PPERF_OBJECT     pProcessObj,
  292.             PPERF_INSTANCE   pProcessInst);
  293.  
  294. WORD ProcessPriority
  295.            (PPERF_OBJECT    pObject,
  296.             PPERF_INSTANCE  pInstance);
  297.  
  298.