Psapi.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. /*++ BUILD Version: 0001 // Increment this if a change has global effects
  2. Copyright (c) 1994-1999 Microsoft Corporation
  3. Module Name:
  4. psapi.h
  5. Abstract:
  6. Include file for APIs provided by PSAPI.DLL
  7. Author:
  8. Richard Shupak [richards] 06-Jan-1994
  9. Revision History:
  10. --*/
  11. #ifndef _PSAPI_H_
  12. #define _PSAPI_H_
  13. #if _MSC_VER > 1000
  14. #pragma once
  15. #endif
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. BOOL
  20. WINAPI
  21. EnumProcesses(
  22. DWORD * lpidProcess,
  23. DWORD cb,
  24. DWORD * cbNeeded
  25. );
  26. BOOL
  27. WINAPI
  28. EnumProcessModules(
  29. HANDLE hProcess,
  30. HMODULE *lphModule,
  31. DWORD cb,
  32. LPDWORD lpcbNeeded
  33. );
  34. DWORD
  35. WINAPI
  36. GetModuleBaseNameA(
  37. HANDLE hProcess,
  38. HMODULE hModule,
  39. LPSTR lpBaseName,
  40. DWORD nSize
  41. );
  42. DWORD
  43. WINAPI
  44. GetModuleBaseNameW(
  45. HANDLE hProcess,
  46. HMODULE hModule,
  47. LPWSTR lpBaseName,
  48. DWORD nSize
  49. );
  50. #ifdef UNICODE
  51. #define GetModuleBaseName GetModuleBaseNameW
  52. #else
  53. #define GetModuleBaseName GetModuleBaseNameA
  54. #endif // !UNICODE
  55. DWORD
  56. WINAPI
  57. GetModuleFileNameExA(
  58. HANDLE hProcess,
  59. HMODULE hModule,
  60. LPSTR lpFilename,
  61. DWORD nSize
  62. );
  63. DWORD
  64. WINAPI
  65. GetModuleFileNameExW(
  66. HANDLE hProcess,
  67. HMODULE hModule,
  68. LPWSTR lpFilename,
  69. DWORD nSize
  70. );
  71. #ifdef UNICODE
  72. #define GetModuleFileNameEx GetModuleFileNameExW
  73. #else
  74. #define GetModuleFileNameEx GetModuleFileNameExA
  75. #endif // !UNICODE
  76. typedef struct _MODULEINFO {
  77. LPVOID lpBaseOfDll;
  78. DWORD SizeOfImage;
  79. LPVOID EntryPoint;
  80. } MODULEINFO, *LPMODULEINFO;
  81. BOOL
  82. WINAPI
  83. GetModuleInformation(
  84. HANDLE hProcess,
  85. HMODULE hModule,
  86. LPMODULEINFO lpmodinfo,
  87. DWORD cb
  88. );
  89. BOOL
  90. WINAPI
  91. EmptyWorkingSet(
  92. HANDLE hProcess
  93. );
  94. BOOL
  95. WINAPI
  96. QueryWorkingSet(
  97. HANDLE hProcess,
  98. PVOID pv,
  99. DWORD cb
  100. );
  101. BOOL
  102. WINAPI
  103. InitializeProcessForWsWatch(
  104. HANDLE hProcess
  105. );
  106. typedef struct _PSAPI_WS_WATCH_INFORMATION {
  107. LPVOID FaultingPc;
  108. LPVOID FaultingVa;
  109. } PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION;
  110. BOOL
  111. WINAPI
  112. GetWsChanges(
  113. HANDLE hProcess,
  114. PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
  115. DWORD cb
  116. );
  117. DWORD
  118. WINAPI
  119. GetMappedFileNameW(
  120. HANDLE hProcess,
  121. LPVOID lpv,
  122. LPWSTR lpFilename,
  123. DWORD nSize
  124. );
  125. DWORD
  126. WINAPI
  127. GetMappedFileNameA(
  128. HANDLE hProcess,
  129. LPVOID lpv,
  130. LPSTR lpFilename,
  131. DWORD nSize
  132. );
  133. #ifdef UNICODE
  134. #define GetMappedFileName GetMappedFileNameW
  135. #else
  136. #define GetMappedFileName GetMappedFileNameA
  137. #endif // !UNICODE
  138. BOOL
  139. WINAPI
  140. EnumDeviceDrivers(
  141. LPVOID *lpImageBase,
  142. DWORD cb,
  143. LPDWORD lpcbNeeded
  144. );
  145. DWORD
  146. WINAPI
  147. GetDeviceDriverBaseNameA(
  148. LPVOID ImageBase,
  149. LPSTR lpBaseName,
  150. DWORD nSize
  151. );
  152. DWORD
  153. WINAPI
  154. GetDeviceDriverBaseNameW(
  155. LPVOID ImageBase,
  156. LPWSTR lpBaseName,
  157. DWORD nSize
  158. );
  159. #ifdef UNICODE
  160. #define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
  161. #else
  162. #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
  163. #endif // !UNICODE
  164. DWORD
  165. WINAPI
  166. GetDeviceDriverFileNameA(
  167. LPVOID ImageBase,
  168. LPSTR lpFilename,
  169. DWORD nSize
  170. );
  171. DWORD
  172. WINAPI
  173. GetDeviceDriverFileNameW(
  174. LPVOID ImageBase,
  175. LPWSTR lpFilename,
  176. DWORD nSize
  177. );
  178. #ifdef UNICODE
  179. #define GetDeviceDriverFileName GetDeviceDriverFileNameW
  180. #else
  181. #define GetDeviceDriverFileName GetDeviceDriverFileNameA
  182. #endif // !UNICODE
  183. // Structure for GetProcessMemoryInfo()
  184. typedef struct _PROCESS_MEMORY_COUNTERS {
  185. DWORD cb;
  186. DWORD PageFaultCount;
  187. SIZE_T PeakWorkingSetSize;
  188. SIZE_T WorkingSetSize;
  189. SIZE_T QuotaPeakPagedPoolUsage;
  190. SIZE_T QuotaPagedPoolUsage;
  191. SIZE_T QuotaPeakNonPagedPoolUsage;
  192. SIZE_T QuotaNonPagedPoolUsage;
  193. SIZE_T PagefileUsage;
  194. SIZE_T PeakPagefileUsage;
  195. } PROCESS_MEMORY_COUNTERS;
  196. typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;
  197. BOOL
  198. WINAPI
  199. GetProcessMemoryInfo(
  200. HANDLE Process,
  201. PPROCESS_MEMORY_COUNTERS ppsmemCounters,
  202. DWORD cb
  203. );
  204. typedef struct _PERFORMANCE_INFORMATION {
  205. DWORD cb;
  206. SIZE_T CommitTotal;
  207. SIZE_T CommitLimit;
  208. SIZE_T CommitPeak;
  209. SIZE_T PhysicalTotal;
  210. SIZE_T PhysicalAvailable;
  211. SIZE_T SystemCache;
  212. SIZE_T KernelTotal;
  213. SIZE_T KernelPaged;
  214. SIZE_T KernelNonpaged;
  215. SIZE_T PageSize;
  216. DWORD HandleCount;
  217. DWORD ProcessCount;
  218. DWORD ThreadCount;
  219. } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION;
  220. BOOL
  221. WINAPI
  222. GetPerformanceInfo (
  223. PPERFORMACE_INFORMATION pPerformanceInformation,
  224. DWORD cb
  225. );
  226. typedef struct _ENUM_PAGE_FILE_INFORMATION {
  227. DWORD cb;
  228. DWORD Reserved;
  229. SIZE_T TotalSize;
  230. SIZE_T TotalInUse;
  231. SIZE_T PeakUsage;
  232. } ENUM_PAGE_FILE_INFORMATION, *PENUM_PAGE_FILE_INFORMATION;
  233. typedef BOOL (*PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCWSTR lpFilename);
  234. typedef BOOL (*PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename);
  235. BOOL
  236. WINAPI
  237. EnumPageFilesW (
  238. PENUM_PAGE_FILE_CALLBACKW pCallBackRoutine,
  239. LPVOID pContext
  240. );
  241. BOOL
  242. WINAPI
  243. EnumPageFilesA (
  244. PENUM_PAGE_FILE_CALLBACKA pCallBackRoutine,
  245. LPVOID pContext
  246. );
  247. #ifdef UNICODE
  248. #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW
  249. #define EnumPageFiles EnumPageFilesW
  250. #else
  251. #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKA
  252. #define EnumPageFiles EnumPageFilesA
  253. #endif // !UNICODE
  254. DWORD
  255. WINAPI
  256. GetProcessImageFileNameA(
  257. HANDLE hProcess,
  258. LPSTR lpImageFileName,
  259. DWORD nSize
  260. );
  261. DWORD
  262. WINAPI
  263. GetProcessImageFileNameW(
  264. HANDLE hProcess,
  265. LPWSTR lpImageFileName,
  266. DWORD nSize
  267. );
  268. #ifdef UNICODE
  269. #define GetProcessImageFileName GetProcessImageFileNameW
  270. #else
  271. #define GetProcessImageFileName GetProcessImageFileNameA
  272. #endif // !UNICODE
  273. #ifdef __cplusplus
  274. }
  275. #endif
  276. #endif