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.

178 lines
4.2 KiB

  1. /*++
  2. Copyright (C) 1996-1999 Microsoft Corporation
  3. Module Name:
  4. perftype.h
  5. Abstract:
  6. Datatype definitions used by performance api utilities
  7. --*/
  8. #ifndef _PERFTYPE_H_
  9. #define _PERFTYPE_H_
  10. #include <windows.h>
  11. #include <winperf.h>
  12. #ifndef _DEBUG_MUTEXES
  13. #define _DEBUG_MUTEXES 0 // for debugging
  14. #endif
  15. // test for delimiter, end of line and non-digit characters
  16. // used by IsNumberInUnicodeList routine
  17. //
  18. #define DIGIT 1
  19. #define DELIMITER 2
  20. #define INVALID 3
  21. #define STR_COUNTER 0
  22. #define STR_HELP 1
  23. #define EvalThisChar(c,d) ( \
  24. (c == d) ? DELIMITER : \
  25. (c == 0) ? DELIMITER : \
  26. (c < (WCHAR)'0') ? INVALID : \
  27. (c > (WCHAR)'9') ? INVALID : \
  28. DIGIT)
  29. // default retry interval is no more often than every 120 seconds (2 min)
  30. #define RETRY_TIME_INTERVAL ((LONGLONG)(1200000000))
  31. typedef struct _LOCAL_PERF_NAME_INFO {
  32. HKEY hKeyPerflib;
  33. HANDLE hNameFile;
  34. HANDLE hHelpFile;
  35. HANDLE hNameFileObject;
  36. HANDLE hHelpFileObject;
  37. LPVOID pNameFileBaseAddr;
  38. LPVOID pHelpFileBaseAddr;
  39. } LOCAL_PERF_NAME_INFO, * PLOCAL_PERF_NAME_INFO;
  40. #define OS_VER_SIZE 8
  41. typedef struct _PERF_MACHINE {
  42. HKEY hKeyPerformanceData;
  43. LPWSTR szName;
  44. PERF_DATA_BLOCK * pSystemPerfData;
  45. LPWSTR * szPerfStrings;
  46. LPWSTR * sz009PerfStrings;
  47. BYTE * typePerfStrings;
  48. FILETIME LastStringUpdateTime;
  49. DWORD dwLastPerfString;
  50. DWORD dwRefCount;
  51. LPWSTR szQueryObjects;
  52. DWORD dwStatus;
  53. LONGLONG llRetryTime;
  54. HANDLE hMutex;
  55. DWORD dwRetryFlags;
  56. DWORD dwMachineFlags;
  57. PLOCAL_PERF_NAME_INFO pLocalNameInfo;
  58. WCHAR szOsVer[OS_VER_SIZE];
  59. struct _PERF_MACHINE * pNext;
  60. struct _PERF_MACHINE * pPrev;
  61. DWORD dwThreadId;
  62. DWORD dwObjectId;
  63. } PERF_MACHINE, *PPERF_MACHINE;
  64. #define PDHIPM_FLAGS_HAVE_COSTLY ((DWORD)0x00000001)
  65. #define PDHIPM_FLAGS_USING_RPDH ((DWORD)0x00000002)
  66. #define PDHIPM_FLAGS_TRY_RPDH_FIRST ((DWORD)0x00000004)
  67. typedef struct _PERFLIB_COUNTER {
  68. DWORD dwObjectId;
  69. LONG lInstanceId;
  70. LPWSTR szInstanceName;
  71. DWORD dwParentObjectId;
  72. LPWSTR szParentInstanceName;
  73. DWORD dwCounterId;
  74. DWORD dwCounterType;
  75. DWORD dwCounterSize;
  76. LONG lDefaultScale;
  77. DWORD dwSQLCounterId;
  78. } PERFLIB_COUNTER, *PPERFLIB_COUNTER;
  79. //
  80. // function definitions
  81. //
  82. // perfutil.c
  83. extern PPERF_MACHINE pFirstMachine;
  84. PDH_STATUS
  85. ConnectMachine(
  86. PPERF_MACHINE pThisMachine
  87. );
  88. PDH_STATUS
  89. ValidateMachineConnection(
  90. PPERF_MACHINE pMachine
  91. );
  92. PPERF_MACHINE
  93. GetMachine(
  94. LPWSTR szMachineName,
  95. DWORD dwIndex,
  96. DWORD dwFlags
  97. );
  98. // GetMachine Flags...
  99. #define PDH_GM_UPDATE_NAME ((DWORD) 0x00000001)
  100. #define PDH_GM_UPDATE_PERFDATA ((DWORD) 0x00000002)
  101. #define PDH_GM_READ_COSTLY_DATA ((DWORD) 0x00000004)
  102. #define PDH_GM_UPDATE_PERFNAME_ONLY ((DWORD) 0x00000008)
  103. BOOL
  104. FreeMachine(
  105. PPERF_MACHINE pMachine,
  106. BOOL bForceRelease,
  107. BOOL bProcessExit
  108. );
  109. BOOL
  110. FreeAllMachines(
  111. BOOL bProcessExit
  112. );
  113. DWORD
  114. GetObjectId(
  115. PPERF_MACHINE pMachine,
  116. LPWSTR szObjectName,
  117. BOOL * bInstances
  118. );
  119. DWORD
  120. GetCounterId(
  121. PPERF_MACHINE pMachine,
  122. DWORD dwObjectId,
  123. LPWSTR szCounterName
  124. );
  125. BOOL
  126. AppendObjectToValueList(
  127. DWORD dwObjectId,
  128. PWSTR pwszValueList,
  129. DWORD dwValueList
  130. );
  131. BOOL
  132. GetObjectPerfInfo(
  133. PPERF_DATA_BLOCK pPerfData,
  134. DWORD dwObjectId,
  135. LONGLONG *pPerfTime,
  136. LONGLONG *pPerfFreq
  137. );
  138. // internal PerfName.C functions
  139. LPCWSTR
  140. PdhiLookupPerfNameByIndex(
  141. PPERF_MACHINE pMachine,
  142. DWORD dwNameIndex
  143. );
  144. DWORD
  145. PdhiLookupPerfIndexByName(
  146. PPERF_MACHINE pMachine,
  147. LPCWSTR szNameBuffer
  148. );
  149. #endif // _PERFTYPE_H_