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.

326 lines
8.7 KiB

  1. /*++
  2. Copyright (c) 1991 Microsoft Corporation
  3. common.h
  4. constants and globals that are common to LODCTR and UNLODCTR
  5. Author:
  6. Bob Watson (a-robw) 10 Feb 93
  7. Revision History:
  8. --*/
  9. #ifndef _LODCTR_COMMON_H_
  10. #define _LODCTR_COMMON_H_
  11. //
  12. // Local constants
  13. //
  14. #define RESERVED 0L
  15. #define LARGE_BUFFER_SIZE 0x10000 // 64K
  16. #define MEDIUM_BUFFER_SIZE 0x8000 // 32K
  17. #define SMALL_BUFFER_SIZE 0x1000 // 4K
  18. #define FILE_NAME_BUFFER_SIZE MAX_PATH
  19. #define DISP_BUFF_SIZE 256L
  20. #define SIZE_OF_OFFSET_STRING 15
  21. #define PERFLIB_BASE_INDEX 1847
  22. #define FIRST_EXT_COUNTER_INDEX 1848
  23. #define FIRST_EXT_HELP_INDEX 1849
  24. #define LOADPERF_BUFF_SIZE 1024
  25. #define H_MUTEX_TIMEOUT 10000L
  26. #define LODCTR_UPNF_RESTORE 0x00000001
  27. #define LODCTR_UPNF_REPAIR 0x00000002
  28. #define LODCTR_UPNF_NOINI 0x00000004
  29. #define LODCTR_UPNF_NOBACKUP 0x00000008
  30. #define cC L'C'
  31. #define cH L'H'
  32. #define cSpace L' '
  33. #define cEquals '='
  34. #define wEquals L'='
  35. #define cQuestion L'?'
  36. #define cBackslash L'\\'
  37. #define cUnderscore L'_'
  38. #define cHyphen L'-'
  39. #define cSlash L'/'
  40. #define cM L'M'
  41. #define cm L'm'
  42. #define cNull L'\0'
  43. #define cDoubleQuote L'\"'
  44. //
  45. // Data structure and type definitions
  46. //
  47. typedef struct _NAME_ENTRY {
  48. struct _NAME_ENTRY * pNext;
  49. DWORD dwOffset;
  50. DWORD dwType;
  51. LPWSTR lpText;
  52. } NAME_ENTRY, * PNAME_ENTRY;
  53. typedef struct _LANGUAGE_LIST_ELEMENT {
  54. struct _LANGUAGE_LIST_ELEMENT * pNextLang; // next lang. list
  55. LPWSTR LangId; // lang ID string for this elem
  56. DWORD dwLangId;
  57. PNAME_ENTRY pFirstName; // head of name list
  58. PNAME_ENTRY pThisName; // pointer to current entry
  59. DWORD dwNumElements; // number of elements in array
  60. DWORD dwNameBuffSize;
  61. DWORD dwHelpBuffSize;
  62. PBYTE NameBuffer; // buffer to store strings
  63. PBYTE HelpBuffer; // buffer to store help strings
  64. } LANGUAGE_LIST_ELEMENT, * PLANGUAGE_LIST_ELEMENT;
  65. typedef struct _SYMBOL_TABLE_ENTRY {
  66. struct _SYMBOL_TABLE_ENTRY * pNext;
  67. LPWSTR SymbolName;
  68. DWORD Value;
  69. } SYMBOL_TABLE_ENTRY, * PSYMBOL_TABLE_ENTRY;
  70. typedef struct _LANG_ENTRY {
  71. struct _LANG_ENTRY * pNext;
  72. LPWSTR szLang;
  73. DWORD dwLang;
  74. DWORD dwLastCounter;
  75. DWORD dwLastHelp;
  76. LPWSTR * lpText;
  77. } LANG_ENTRY, * PLANG_ENTRY;
  78. typedef struct _SERVICE_ENTRY {
  79. struct _SERVICE_ENTRY * pNext;
  80. LPWSTR szService;
  81. LPWSTR szIniFile;
  82. DWORD dwObjects[MAX_PERF_OBJECTS_IN_QUERY_FUNCTION];
  83. DWORD dwNumObjects;
  84. DWORD dwFirstCounter;
  85. DWORD dwFirstHelp;
  86. DWORD dwLastCounter;
  87. DWORD dwLastHelp;
  88. DWORD dwDisable;
  89. } SERVICE_ENTRY, * PSERVICE_ENTRY;
  90. //
  91. // Utility Routine prototypes for routines in common.c
  92. //
  93. #define StringToInt(in,out) (((swscanf((in), (LPCWSTR) L" %d", (out))) == 1) ? TRUE : FALSE)
  94. //#define _LOADPERF_SHOW_MEM_ALLOC 1
  95. #define MemorySize(x) (x != NULL ? (DWORD) HeapSize(GetProcessHeap(), 0, x) : (DWORD) 0)
  96. #ifndef _LOADPERF_SHOW_MEM_ALLOC
  97. #define MemoryAllocate(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, x)
  98. #define MemoryFree(x) if (x != NULL) HeapFree(GetProcessHeap(), 0, x)
  99. #define MemoryResize(x,y) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, x, y)
  100. #else
  101. __inline
  102. LPVOID LoadPerfHeapAlloc(LPSTR szSource, DWORD dwLine, SIZE_T x)
  103. {
  104. LPVOID lpReturn = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, x);
  105. DbgPrint("HeapAlloc(%s#%d)(%d,0x%p)\n",
  106. szSource, dwLine, (lpReturn != NULL ? x : 0), lpReturn);
  107. return lpReturn;
  108. }
  109. __inline
  110. BOOL
  111. LoadPerfHeapFree(LPSTR szSource, DWORD dwLine, LPVOID x)
  112. {
  113. BOOL bReturn = TRUE;
  114. SIZE_T dwSize;
  115. if (x != NULL) {
  116. dwSize = HeapSize(GetProcessHeap(), 0, x);
  117. bReturn = HeapFree(GetProcessHeap(), 0, x);
  118. DbgPrint("HeapFree(%s#%d)(0x%p,%d)\n",
  119. szSource, dwLine, x, (bReturn ? dwSize : 0));
  120. }
  121. return bReturn;
  122. }
  123. __inline
  124. LPVOID
  125. LoadPerfHeapReAlloc(LPSTR szSource, DWORD dwLine, LPVOID x, SIZE_T y)
  126. {
  127. LPVOID lpReturn;
  128. SIZE_T dwSize;
  129. dwSize = HeapSize(GetProcessHeap(), 0, x);
  130. lpReturn = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, x, y);
  131. DbgPrint("HeapReAlloc(%s#%d)(0x%p,%d)(0x%p,%d)\n",
  132. szSource, dwLine, x, dwSize, lpReturn, (lpReturn != NULL ? y : 0));
  133. return lpReturn;
  134. }
  135. #define MemoryAllocate(x) LoadPerfHeapAlloc(__FILE__,__LINE__,x)
  136. #define MemoryFree(x) LoadPerfHeapFree(__FILE__,__LINE__,x)
  137. #define MemoryResize(x,y) LoadPerfHeapReAlloc(__FILE__,__LINE__,x,y)
  138. #endif
  139. LPCWSTR
  140. GetFormatResource(
  141. UINT wStringId
  142. );
  143. VOID
  144. DisplayCommandHelp(
  145. UINT iFirstLine,
  146. UINT iLastLine
  147. );
  148. BOOL
  149. TrimSpaces(
  150. IN OUT LPWSTR szString
  151. );
  152. BOOL
  153. IsDelimiter(
  154. IN WCHAR cChar,
  155. IN WCHAR cDelimiter
  156. );
  157. LPCWSTR
  158. GetItemFromString(
  159. IN LPCWSTR szEntry,
  160. IN DWORD dwItem,
  161. IN WCHAR cDelimiter
  162. );
  163. BOOLEAN LoadPerfGrabMutex();
  164. LPWSTR LoadPerfGetInfPath();
  165. LPWSTR LoadPerfGetLanguage(LPWSTR szLang, BOOL bPrimary);
  166. BOOL
  167. LoadPerfBackupIniFile(
  168. LPCWSTR szIniFile,
  169. LPWSTR szLangId,
  170. LPWSTR * szIniName,
  171. LPWSTR * szDriverName,
  172. BOOL bExtFile
  173. );
  174. void
  175. ReportLoadPerfEvent(
  176. IN WORD EventType,
  177. IN DWORD EventID,
  178. IN DWORD dwDataCount,
  179. IN DWORD dwData1,
  180. IN DWORD dwData2,
  181. IN DWORD dwData3,
  182. IN DWORD dwData4,
  183. IN WORD wStringCount,
  184. IN LPWSTR szString1,
  185. IN LPWSTR szString2,
  186. IN LPWSTR szString3
  187. );
  188. LPSTR
  189. LoadPerfWideCharToMultiByte(
  190. UINT CodePage,
  191. LPWSTR wszString
  192. );
  193. LPWSTR
  194. LoadPerfMultiByteToWideChar(
  195. UINT CodePage,
  196. LPSTR aszString
  197. );
  198. DWORD
  199. LoadPerfGetFileSize(
  200. LPWSTR szFileName,
  201. LPDWORD pdwUnicode,
  202. BOOL bUnicode
  203. );
  204. WORD
  205. LoadPerfGetLCIDFromString(
  206. LPWSTR szLangId
  207. );
  208. int
  209. LoadPerfGetCodePage(
  210. LPWSTR szLCID
  211. );
  212. LPWSTR
  213. * BuildNameTable(
  214. HKEY hKeyRegistry, // handle to registry db with counter names
  215. LPWSTR lpszLangId, // unicode value of Language subkey
  216. PDWORD pdwLastItem // size of array in elements
  217. );
  218. DWORD
  219. LoadPerfInstallPerfDll(
  220. DWORD dwMode,
  221. LPCWSTR szComputerName,
  222. LPWSTR lpDriverName,
  223. LPCWSTR lpIniFile,
  224. PLANG_ENTRY LangList,
  225. PSERVICE_ENTRY pService,
  226. ULONG_PTR dwFlags
  227. );
  228. DWORD
  229. UpdatePerfNameFilesX(
  230. LPCWSTR szNewCtrFilePath, // data file with new base counter strings
  231. LPCWSTR szNewHlpFilePath, // data file with new base counter strings
  232. LPWSTR szLanguageID, // Lang ID to update
  233. ULONG_PTR dwFlags // flags
  234. );
  235. BOOL
  236. GetInstalledLanguageList(
  237. HKEY hPerflibRoot,
  238. LPWSTR * mszLangList
  239. );
  240. #define WMI_LODCTR_EVENT 1
  241. #define WMI_UNLODCTR_EVENT 2
  242. DWORD
  243. LoadPerfSignalWmiWithNewData(
  244. DWORD dwEventId
  245. );
  246. extern LPCWSTR NamesKey;
  247. extern LPCWSTR DefaultLangId;
  248. extern LPCSTR aszDefaultLangId;
  249. extern LPCWSTR DefaultLangTag;
  250. extern LPCWSTR Counters;
  251. extern LPCWSTR Help;
  252. extern LPCWSTR BaseIndex;
  253. extern LPCWSTR LastHelp;
  254. extern LPCWSTR LastCounter;
  255. extern LPCWSTR FirstHelp;
  256. extern LPCWSTR FirstCounter;
  257. extern LPCWSTR Busy;
  258. extern LPCWSTR Slash;
  259. extern LPCWSTR BlankString;
  260. extern LPCWSTR DriverPathRoot;
  261. extern LPCWSTR Performance;
  262. extern LPCWSTR CounterNameStr;
  263. extern LPCWSTR HelpNameStr;
  264. extern LPCWSTR AddCounterNameStr;
  265. extern LPCWSTR AddHelpNameStr;
  266. extern LPCWSTR VersionStr;
  267. extern LPCWSTR szObjectList;
  268. extern LPCWSTR szLibraryValidationCode;
  269. extern LPCWSTR szDisplayName;
  270. extern LPCWSTR szPerfIniPath;
  271. extern LPCWSTR wszNotFound;
  272. extern LPCSTR szInfo;
  273. extern LPCSTR szSymbolFile;
  274. extern LPCSTR szNotFound;
  275. extern LPCSTR szLanguages;
  276. extern LPCWSTR szLangUS;
  277. extern LPCWSTR DisablePerformanceCounters;
  278. extern LPCWSTR szDatExt;
  279. extern LPCWSTR szBakExt;
  280. extern LPCSTR aszDriverName;
  281. extern HANDLE hEventLog;
  282. extern HANDLE hLoadPerfMutex;
  283. #endif // _LODCTR_COMMON_H_