Source code of Windows XP (NT5)
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.

295 lines
8.7 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // Pch.h
  7. //
  8. // Description:
  9. // Precompiled header file.
  10. //
  11. // Maintained By:
  12. // Galen Barbee (GalenB) 01-MAR-2000
  13. //
  14. //////////////////////////////////////////////////////////////////////////////
  15. //////////////////////////////////////////////////////////////////////////////
  16. // Constant Definitions
  17. //////////////////////////////////////////////////////////////////////////////
  18. #define UNICODE
  19. #if DBG==1 || defined( _DEBUG )
  20. #define DEBUG
  21. //
  22. // Define this to change Interface Tracking
  23. //
  24. //#define NO_TRACE_INTERFACES
  25. //
  26. // Define this to pull in the SysAllocXXX functions. Requires linking to
  27. // OLEAUT32.DLL
  28. //
  29. #define USES_SYSALLOCSTRING
  30. #endif // DBG==1 || _DEBUG
  31. //////////////////////////////////////////////////////////////////////////////
  32. // Forward Class Declarations
  33. //////////////////////////////////////////////////////////////////////////////
  34. //////////////////////////////////////////////////////////////////////////////
  35. // External Class Declarations
  36. //////////////////////////////////////////////////////////////////////////////
  37. //////////////////////////////////////////////////////////////////////////////
  38. // Include Files
  39. //////////////////////////////////////////////////////////////////////////////
  40. #include <Pragmas.h>
  41. #include <windows.h>
  42. #include <objbase.h>
  43. #include <wchar.h>
  44. #include <ComCat.h>
  45. #include <clusapi.h>
  46. #include <Common.h>
  47. #include <Debug.h>
  48. #include <Log.h>
  49. #include <CITracker.h>
  50. #include <CFactory.h>
  51. #include <Dll.h>
  52. #include <guids.h>
  53. #include <WBemCli.h>
  54. #include <ClusCfgGuids.h>
  55. #include <ClusCfgClient.h>
  56. #include <ClusCfgServer.h>
  57. #include <ClusCfgPrivate.h>
  58. #include <LoadString.h>
  59. #include "ServerResources.h"
  60. #include "WMIHelpers.h"
  61. #include <StatusReports.h>
  62. #include "ClusCfgServerGuids.h"
  63. #include <ClusCfgConstants.h>
  64. #include <ClusterUtils.h>
  65. //////////////////////////////////////////////////////////////////////////////
  66. // Type Definitions
  67. //////////////////////////////////////////////////////////////////////////////
  68. const HRESULT E_PROPTYPEMISMATCH = HRESULT_FROM_WIN32( ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH );
  69. const WCHAR g_szNameSpaceRoot [] = { L"\\\\?\\GLOBALROOT" };
  70. const int STATUS_CONNECTED = 2;
  71. #define LOG_STATUS_REPORT( _psz_, _hr_ ) \
  72. { \
  73. HRESULT _hrTemp_;\
  74. \
  75. _hrTemp_ = THR( HrSendStatusReport( \
  76. m_picccCallback, \
  77. TASKID_Major_Server_Log, \
  78. TASKID_Minor_Update_Progress, \
  79. 0, \
  80. 1, \
  81. 1, \
  82. _hr_,\
  83. _psz_ \
  84. ) ); \
  85. if ( FAILED( _hrTemp_ ) ) \
  86. { \
  87. _hr_ = _hrTemp_; \
  88. } \
  89. }
  90. #define LOG_STATUS_REPORT1( _minor_, _psz_, _hr_ ) \
  91. { \
  92. HRESULT _hrTemp_;\
  93. \
  94. _hrTemp_ = THR( HrSendStatusReport( \
  95. m_picccCallback, \
  96. TASKID_Major_Server_Log, \
  97. _minor_, \
  98. 0, \
  99. 1, \
  100. 1, \
  101. _hr_,\
  102. _psz_ \
  103. ) ); \
  104. if ( FAILED( _hrTemp_ ) ) \
  105. { \
  106. _hr_ = _hrTemp_; \
  107. } \
  108. }
  109. #define LOG_STATUS_REPORT_STRING( _pszFormat_, _psz_, _hr_ ) \
  110. { \
  111. BSTR _bstrMsg_ = NULL; \
  112. HRESULT _hrTemp_; \
  113. \
  114. _hrTemp_ = THR( HrFormatStringIntoBSTR( _pszFormat_, &_bstrMsg_, _psz_ ) ); \
  115. if ( FAILED( _hrTemp_ ) ) \
  116. { \
  117. goto Cleanup; \
  118. } \
  119. \
  120. _hrTemp_ = THR( HrSendStatusReport( \
  121. m_picccCallback, \
  122. TASKID_Major_Server_Log, \
  123. TASKID_Minor_Update_Progress, \
  124. 0, \
  125. 1, \
  126. 1, \
  127. _hr_,\
  128. _bstrMsg_ \
  129. ) ); \
  130. if ( FAILED( _hrTemp_ ) ) \
  131. { \
  132. _hr_ = _hrTemp_; \
  133. } \
  134. \
  135. TraceSysFreeString( _bstrMsg_ ); \
  136. }
  137. #define LOG_STATUS_REPORT_STRING2( _pszFormat_, _arg0_, _arg1_, _hr_ ) \
  138. { \
  139. BSTR _bstrMsg_ = NULL; \
  140. HRESULT _hrTemp_; \
  141. \
  142. _hrTemp_ = THR( HrFormatStringIntoBSTR( _pszFormat_, &_bstrMsg_, _arg0_, _arg1_ ) ); \
  143. if ( FAILED( _hrTemp_ ) ) \
  144. { \
  145. goto Cleanup; \
  146. } \
  147. \
  148. _hrTemp_ = THR( HrSendStatusReport( \
  149. m_picccCallback, \
  150. TASKID_Major_Server_Log, \
  151. TASKID_Minor_Update_Progress, \
  152. 0, \
  153. 1, \
  154. 1, \
  155. _hr_,\
  156. _bstrMsg_ \
  157. ) ); \
  158. if ( FAILED( _hrTemp_ ) ) \
  159. { \
  160. _hr_ = _hrTemp_; \
  161. } \
  162. \
  163. TraceSysFreeString( _bstrMsg_ ); \
  164. }
  165. #define LOG_STATUS_REPORT_STRING3( _pszFormat_, _arg0_, _arg1_, _arg2_, _hr_ ) \
  166. { \
  167. BSTR _bstrMsg_ = NULL; \
  168. HRESULT _hrTemp_; \
  169. \
  170. _hrTemp_ = THR( HrFormatStringIntoBSTR( _pszFormat_, &_bstrMsg_, _arg0_, _arg1_, _arg2_ ) ); \
  171. if ( FAILED( _hrTemp_ ) ) \
  172. { \
  173. goto Cleanup; \
  174. } \
  175. \
  176. _hrTemp_ = THR( HrSendStatusReport( \
  177. m_picccCallback, \
  178. TASKID_Major_Server_Log, \
  179. TASKID_Minor_Update_Progress, \
  180. 0, \
  181. 1, \
  182. 1, \
  183. _hr_,\
  184. _bstrMsg_ \
  185. ) ); \
  186. if ( FAILED( _hrTemp_ ) ) \
  187. { \
  188. _hr_ = _hrTemp_; \
  189. } \
  190. \
  191. TraceSysFreeString( _bstrMsg_ ); \
  192. }
  193. #define STATUS_REPORT( _major_, _minor_, _uid_, _hr_ ) \
  194. { \
  195. BSTR _bstrMsg_ = NULL; \
  196. HRESULT _hrTemp_; \
  197. \
  198. _hrTemp_ = THR( HrLoadStringIntoBSTR( g_hInstance, _uid_, &_bstrMsg_) ); \
  199. if ( FAILED( _hrTemp_ ) ) \
  200. { \
  201. goto Cleanup; \
  202. } \
  203. \
  204. _hrTemp_ = THR( HrSendStatusReport( \
  205. m_picccCallback, \
  206. _major_, \
  207. _minor_, \
  208. 0, \
  209. 1, \
  210. 1, \
  211. _hr_,\
  212. _bstrMsg_ \
  213. ) ); \
  214. if ( FAILED( _hrTemp_ ) ) \
  215. { \
  216. _hr_ = _hrTemp_; \
  217. } \
  218. \
  219. TraceSysFreeString( _bstrMsg_ ); \
  220. }
  221. #define STATUS_REPORT_STRING( _major_, _minor_, _uid_, _psz_, _hr_ ) \
  222. { \
  223. BSTR _bstrMsg_ = NULL; \
  224. HRESULT _hrTemp_; \
  225. \
  226. _hrTemp_ = THR( HrFormatStringIntoBSTR( g_hInstance, _uid_, &_bstrMsg_, _psz_ ) ); \
  227. if ( FAILED( _hrTemp_ ) ) \
  228. { \
  229. goto Cleanup; \
  230. } \
  231. \
  232. _hrTemp_ = THR( HrSendStatusReport( \
  233. m_picccCallback, \
  234. _major_, \
  235. _minor_, \
  236. 0, \
  237. 1, \
  238. 1, \
  239. _hr_,\
  240. _bstrMsg_ \
  241. ) ); \
  242. if ( FAILED( _hrTemp_ ) ) \
  243. { \
  244. _hr_ = _hrTemp_; \
  245. } \
  246. \
  247. TraceSysFreeString( _bstrMsg_ ); \
  248. }
  249. #define STATUS_REPORT_STRING2( _major_, _minor_, _uid_, _arg0_, _arg1_, _hr_ ) \
  250. { \
  251. BSTR _bstrMsg_ = NULL; \
  252. HRESULT _hrTemp_; \
  253. \
  254. _hrTemp_ = THR( HrFormatStringIntoBSTR( g_hInstance, _uid_, &_bstrMsg_, _arg0_, _arg1_ ) ); \
  255. if ( FAILED( _hrTemp_ ) ) \
  256. { \
  257. goto Cleanup; \
  258. } \
  259. \
  260. _hrTemp_ = THR( HrSendStatusReport( \
  261. m_picccCallback, \
  262. _major_, \
  263. _minor_, \
  264. 0, \
  265. 1, \
  266. 1, \
  267. _hr_,\
  268. _bstrMsg_ \
  269. ) ); \
  270. if ( FAILED( _hrTemp_ ) ) \
  271. { \
  272. _hr_ = _hrTemp_; \
  273. } \
  274. \
  275. TraceSysFreeString( _bstrMsg_ ); \
  276. }