jwaloadperf.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. {******************************************************************************}
  2. { }
  3. { Performance Monitoring Installer API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: loadperf.h, released June 2000. The original Pascal }
  9. { code is: LoadPerf.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaLoadPerf.pas,v 1.9 2005/09/06 16:36:50 marquardt Exp $
  43. unit JwaLoadPerf;
  44. {$WEAKPACKAGEUNIT}
  45. {$I jediapilib.inc}
  46. interface
  47. uses
  48. JwaWindows;
  49. // flags for dwFlags Argument
  50. const
  51. LOADPERF_FLAGS_DELETE_MOF_ON_EXIT = ULONG_PTR(1);
  52. {$EXTERNALSYM LOADPERF_FLAGS_DELETE_MOF_ON_EXIT}
  53. LOADPERF_FLAGS_LOAD_REGISTRY_ONLY = ULONG_PTR(2);
  54. {$EXTERNALSYM LOADPERF_FLAGS_LOAD_REGISTRY_ONLY}
  55. LOADPERF_FLAGS_CREATE_MOF_ONLY = ULONG_PTR(4);
  56. {$EXTERNALSYM LOADPERF_FLAGS_CREATE_MOF_ONLY}
  57. LOADPERF_FLAGS_DISPLAY_USER_MSGS = ULONG_PTR(8);
  58. {$EXTERNALSYM LOADPERF_FLAGS_DISPLAY_USER_MSGS}
  59. (* removed PSDK XP SP1
  60. // note: LOADPERF_FLAGS_LOAD_REGISTRY_ONLY is not a valid flag for
  61. // LoadMofFromInstalledServiceA/W as the service must already be installed
  62. function LoadMofFromInstalledServiceA(szServiceName, szMofFilename: LPCSTR;
  63. dwFlags: ULONG_PTR): DWORD; stdcall;
  64. {$EXTERNALSYM LoadMofFromInstalledServiceA}
  65. function LoadMofFromInstalledServiceW(szServiceName, szMofFilename: LPCWSTR;
  66. dwFlags: ULONG_PTR): DWORD; stdcall;
  67. {$EXTERNALSYM LoadMofFromInstalledServiceW}
  68. function LoadMofFromInstalledService(szServiceName, szMofFilename: LPCTSTR;
  69. dwFlags: ULONG_PTR): DWORD; stdcall;
  70. {$EXTERNALSYM LoadMofFromInstalledService}
  71. *)
  72. function InstallPerfDllA(szComputerName, lpIniFile: LPCSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  73. {$EXTERNALSYM InstallPerfDllA}
  74. function InstallPerfDllW(szComputerName, lpIniFile: LPCWSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  75. {$EXTERNALSYM InstallPerfDllW}
  76. function InstallPerfDll(szComputerName, lpIniFile: LPCTSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  77. {$EXTERNALSYM InstallPerfDll}
  78. function LoadPerfCounterTextStringsA(lpCommandLine: LPSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  79. {$EXTERNALSYM LoadPerfCounterTextStringsA}
  80. function LoadPerfCounterTextStringsW(lpCommandLine: LPWSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  81. {$EXTERNALSYM LoadPerfCounterTextStringsW}
  82. function LoadPerfCounterTextStrings(lpCommandLine: LPTSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  83. {$EXTERNALSYM LoadPerfCounterTextStrings}
  84. function UnloadPerfCounterTextStringsA(lpCommandLine: LPSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  85. {$EXTERNALSYM UnloadPerfCounterTextStringsA}
  86. function UnloadPerfCounterTextStringsW(lpCommandLine: LPWSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  87. {$EXTERNALSYM UnloadPerfCounterTextStringsW}
  88. function UnloadPerfCounterTextStrings(lpCommandLine: LPTSTR; bQuietModeArg: BOOL): DWORD; stdcall;
  89. {$EXTERNALSYM UnloadPerfCounterTextStrings}
  90. function UpdatePerfNameFilesA(szNewCtrFilePath, szNewHlpFilePath: LPCSTR;
  91. szLanguageID: LPSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  92. {$EXTERNALSYM UpdatePerfNameFilesA}
  93. function UpdatePerfNameFilesW(szNewCtrFilePath, szNewHlpFilePath: LPCWSTR;
  94. szLanguageID: LPWSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  95. {$EXTERNALSYM UpdatePerfNameFilesW}
  96. function UpdatePerfNameFiles(szNewCtrFilePath, szNewHlpFilePath: LPCTSTR;
  97. szLanguageID: LPTSTR; dwFlags: ULONG_PTR): DWORD; stdcall;
  98. {$EXTERNALSYM UpdatePerfNameFiles}
  99. function SetServiceAsTrustedA(szReserved, szServiceName: LPCSTR): DWORD; stdcall;
  100. {$EXTERNALSYM SetServiceAsTrustedA}
  101. function SetServiceAsTrustedW(szReserved, szServiceName: LPCWSTR): DWORD; stdcall;
  102. {$EXTERNALSYM SetServiceAsTrustedW}
  103. function SetServiceAsTrusted(szReserved, szServiceName: LPCTSTR): DWORD; stdcall;
  104. {$EXTERNALSYM SetServiceAsTrusted}
  105. function BackupPerfRegistryToFileW(szFileName: LPCWSTR; szCommentString: LPCWSTR): DWORD; stdcall;
  106. {$EXTERNALSYM BackupPerfRegistryToFileW}
  107. function RestorePerfRegistryFromFileW(szFileName: LPCWSTR; szLangId: LPCWSTR): DWORD; stdcall;
  108. {$EXTERNALSYM RestorePerfRegistryFromFileW}
  109. implementation
  110. uses
  111. JwaWinDLLNames;
  112. {$IFDEF DYNAMIC_LINK}
  113. var
  114. _InstallPerfDllA: Pointer;
  115. function InstallPerfDllA;
  116. begin
  117. GetProcedureAddress(_InstallPerfDllA, loadperflib, 'InstallPerfDllA');
  118. asm
  119. MOV ESP, EBP
  120. POP EBP
  121. JMP [_InstallPerfDllA]
  122. end;
  123. end;
  124. var
  125. _InstallPerfDllW: Pointer;
  126. function InstallPerfDllW;
  127. begin
  128. GetProcedureAddress(_InstallPerfDllW, loadperflib, 'InstallPerfDllW');
  129. asm
  130. MOV ESP, EBP
  131. POP EBP
  132. JMP [_InstallPerfDllW]
  133. end;
  134. end;
  135. var
  136. _InstallPerfDll: Pointer;
  137. function InstallPerfDll;
  138. begin
  139. GetProcedureAddress(_InstallPerfDll, loadperflib, 'InstallPerfDll' + AWSuffix);
  140. asm
  141. MOV ESP, EBP
  142. POP EBP
  143. JMP [_InstallPerfDll]
  144. end;
  145. end;
  146. var
  147. _LoadPerfCounterTextStringsA: Pointer;
  148. function LoadPerfCounterTextStringsA;
  149. begin
  150. GetProcedureAddress(_LoadPerfCounterTextStringsA, loadperflib, 'LoadPerfCounterTextStringsA');
  151. asm
  152. MOV ESP, EBP
  153. POP EBP
  154. JMP [_LoadPerfCounterTextStringsA]
  155. end;
  156. end;
  157. var
  158. _LoadPerfCounterTextStringsW: Pointer;
  159. function LoadPerfCounterTextStringsW;
  160. begin
  161. GetProcedureAddress(_LoadPerfCounterTextStringsW, loadperflib, 'LoadPerfCounterTextStringsW');
  162. asm
  163. MOV ESP, EBP
  164. POP EBP
  165. JMP [_LoadPerfCounterTextStringsW]
  166. end;
  167. end;
  168. var
  169. _LoadPerfCounterTextStrings: Pointer;
  170. function LoadPerfCounterTextStrings;
  171. begin
  172. GetProcedureAddress(_LoadPerfCounterTextStrings, loadperflib, 'LoadPerfCounterTextStrings' + AWSuffix);
  173. asm
  174. MOV ESP, EBP
  175. POP EBP
  176. JMP [_LoadPerfCounterTextStrings]
  177. end;
  178. end;
  179. var
  180. _UnloadPerfCounterTextStringsA: Pointer;
  181. function UnloadPerfCounterTextStringsA;
  182. begin
  183. GetProcedureAddress(_UnloadPerfCounterTextStringsA, loadperflib, 'UnloadPerfCounterTextStringsA');
  184. asm
  185. MOV ESP, EBP
  186. POP EBP
  187. JMP [_UnloadPerfCounterTextStringsA]
  188. end;
  189. end;
  190. var
  191. _UnloadPerfCounterTextStringsW: Pointer;
  192. function UnloadPerfCounterTextStringsW;
  193. begin
  194. GetProcedureAddress(_UnloadPerfCounterTextStringsW, loadperflib, 'UnloadPerfCounterTextStringsW');
  195. asm
  196. MOV ESP, EBP
  197. POP EBP
  198. JMP [_UnloadPerfCounterTextStringsW]
  199. end;
  200. end;
  201. var
  202. _UnloadPerfCounterTextStrings: Pointer;
  203. function UnloadPerfCounterTextStrings;
  204. begin
  205. GetProcedureAddress(_UnloadPerfCounterTextStrings, loadperflib, 'UnloadPerfCounterTextStrings' + AWSuffix);
  206. asm
  207. MOV ESP, EBP
  208. POP EBP
  209. JMP [_UnloadPerfCounterTextStrings]
  210. end;
  211. end;
  212. var
  213. _UpdatePerfNameFilesA: Pointer;
  214. function UpdatePerfNameFilesA;
  215. begin
  216. GetProcedureAddress(_UpdatePerfNameFilesA, loadperflib, 'UpdatePerfNameFilesA');
  217. asm
  218. MOV ESP, EBP
  219. POP EBP
  220. JMP [_UpdatePerfNameFilesA]
  221. end;
  222. end;
  223. var
  224. _UpdatePerfNameFilesW: Pointer;
  225. function UpdatePerfNameFilesW;
  226. begin
  227. GetProcedureAddress(_UpdatePerfNameFilesW, loadperflib, 'UpdatePerfNameFilesW');
  228. asm
  229. MOV ESP, EBP
  230. POP EBP
  231. JMP [_UpdatePerfNameFilesW]
  232. end;
  233. end;
  234. var
  235. _UpdatePerfNameFiles: Pointer;
  236. function UpdatePerfNameFiles;
  237. begin
  238. GetProcedureAddress(_UpdatePerfNameFiles, loadperflib, 'UpdatePerfNameFiles' + AWSuffix);
  239. asm
  240. MOV ESP, EBP
  241. POP EBP
  242. JMP [_UpdatePerfNameFiles]
  243. end;
  244. end;
  245. var
  246. _SetServiceAsTrustedA: Pointer;
  247. function SetServiceAsTrustedA;
  248. begin
  249. GetProcedureAddress(_SetServiceAsTrustedA, loadperflib, 'SetServiceAsTrustedA');
  250. asm
  251. MOV ESP, EBP
  252. POP EBP
  253. JMP [_SetServiceAsTrustedA]
  254. end;
  255. end;
  256. var
  257. _SetServiceAsTrustedW: Pointer;
  258. function SetServiceAsTrustedW;
  259. begin
  260. GetProcedureAddress(_SetServiceAsTrustedW, loadperflib, 'SetServiceAsTrustedW');
  261. asm
  262. MOV ESP, EBP
  263. POP EBP
  264. JMP [_SetServiceAsTrustedW]
  265. end;
  266. end;
  267. var
  268. _SetServiceAsTrusted: Pointer;
  269. function SetServiceAsTrusted;
  270. begin
  271. GetProcedureAddress(_SetServiceAsTrusted, loadperflib, 'SetServiceAsTrusted' + AWSuffix);
  272. asm
  273. MOV ESP, EBP
  274. POP EBP
  275. JMP [_SetServiceAsTrusted]
  276. end;
  277. end;
  278. var
  279. _BackupPerfRegistryToFileW: Pointer;
  280. function BackupPerfRegistryToFileW;
  281. begin
  282. GetProcedureAddress(_BackupPerfRegistryToFileW, loadperflib, 'BackupPerfRegistryToFileW');
  283. asm
  284. MOV ESP, EBP
  285. POP EBP
  286. JMP [_BackupPerfRegistryToFileW]
  287. end;
  288. end;
  289. var
  290. _RestorePerfRegistryFromFileW: Pointer;
  291. function RestorePerfRegistryFromFileW;
  292. begin
  293. GetProcedureAddress(_RestorePerfRegistryFromFileW, loadperflib, 'RestorePerfRegistryFromFileW');
  294. asm
  295. MOV ESP, EBP
  296. POP EBP
  297. JMP [_RestorePerfRegistryFromFileW]
  298. end;
  299. end;
  300. {$ELSE}
  301. function InstallPerfDllA; external loadperflib name 'InstallPerfDllA';
  302. function InstallPerfDllW; external loadperflib name 'InstallPerfDllW';
  303. function InstallPerfDll; external loadperflib name 'InstallPerfDll' + AWSuffix;
  304. function LoadPerfCounterTextStringsA; external loadperflib name 'LoadPerfCounterTextStringsA';
  305. function LoadPerfCounterTextStringsW; external loadperflib name 'LoadPerfCounterTextStringsW';
  306. function LoadPerfCounterTextStrings; external loadperflib name 'LoadPerfCounterTextStrings' + AWSuffix;
  307. function UnloadPerfCounterTextStringsA; external loadperflib name 'UnloadPerfCounterTextStringsA';
  308. function UnloadPerfCounterTextStringsW; external loadperflib name 'UnloadPerfCounterTextStringsW';
  309. function UnloadPerfCounterTextStrings; external loadperflib name 'UnloadPerfCounterTextStrings' + AWSuffix;
  310. function UpdatePerfNameFilesA; external loadperflib name 'UpdatePerfNameFilesA';
  311. function UpdatePerfNameFilesW; external loadperflib name 'UpdatePerfNameFilesW';
  312. function UpdatePerfNameFiles; external loadperflib name 'UpdatePerfNameFiles' + AWSuffix;
  313. function SetServiceAsTrustedA; external loadperflib name 'SetServiceAsTrustedA';
  314. function SetServiceAsTrustedW; external loadperflib name 'SetServiceAsTrustedW';
  315. function SetServiceAsTrusted; external loadperflib name 'SetServiceAsTrusted' + AWSuffix;
  316. function BackupPerfRegistryToFileW; external loadperflib name 'BackupPerfRegistryToFileW';
  317. function RestorePerfRegistryFromFileW; external loadperflib name 'RestorePerfRegistryFromFileW';
  318. {$ENDIF DYNAMIC_LINK}
  319. end.