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.

1649 lines
35 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1997 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // BarfClus.cpp
  7. //
  8. // Abstract:
  9. // Implementation of the Basic Artifical Resource Failure entry points
  10. // for CLUSAPI functions.
  11. //
  12. // Author:
  13. // David Potter (davidp) April 14, 1997
  14. //
  15. // Revision History:
  16. //
  17. // Notes:
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #define _NO_BARF_DEFINITIONS_
  22. #include "Barf.h"
  23. #include "BarfClus.h"
  24. #include "TraceTag.h"
  25. #include "ExcOper.h"
  26. #ifdef _USING_BARF_
  27. #error BARF failures should be disabled!
  28. #endif
  29. #ifdef _DEBUG // The entire file!
  30. #define new DEBUG_NEW
  31. #undef THIS_FILE
  32. static char THIS_FILE[] = __FILE__;
  33. /////////////////////////////////////////////////////////////////////////////
  34. // Global Variables
  35. /////////////////////////////////////////////////////////////////////////////
  36. CBarf g_barfClusApi(_T("CLUSAPI Calls"));
  37. /////////////////////////////////////////////////////////////////////////////
  38. // Cluster Management Functions
  39. /////////////////////////////////////////////////////////////////////////////
  40. BOOL BARFCloseCluster(HCLUSTER hCluster)
  41. {
  42. if (g_barfClusApi.BFail())
  43. {
  44. Trace(g_tagBarf, _T("CloseCluster()"));
  45. SetLastError(ERROR_INVALID_FUNCTION);
  46. return FALSE;
  47. } // if: BARF failure
  48. else
  49. return CloseCluster(hCluster);
  50. } //*** BARFCloseCluster()
  51. BOOL BARFCloseClusterNotifyPort(HCHANGE hChange)
  52. {
  53. if (g_barfClusApi.BFail())
  54. {
  55. Trace(g_tagBarf, _T("CloseClusterNotifyPort()"));
  56. SetLastError(ERROR_INVALID_FUNCTION);
  57. return FALSE;
  58. } // if: BARF failure
  59. else
  60. return CloseClusterNotifyPort(hChange);
  61. } //*** BARFCloseClusterNotifyPort()
  62. DWORD BARFClusterCloseEnum(HCLUSENUM hClusEnum)
  63. {
  64. if (g_barfClusApi.BFail())
  65. {
  66. Trace(g_tagBarf, _T("ClusterCloseEnum()"));
  67. return ERROR_INVALID_FUNCTION;
  68. } // if: BARF failure
  69. else
  70. return ClusterCloseEnum(hClusEnum);
  71. } //*** BARFClusterCloseEnum()
  72. DWORD BARFClusterEnum(
  73. HCLUSENUM hClusEnum,
  74. DWORD dwIndex,
  75. LPDWORD lpdwType,
  76. LPWSTR lpszName,
  77. LPDWORD lpcchName
  78. )
  79. {
  80. // if (g_barfClusApi.BFail())
  81. // {
  82. // Trace(g_tagBarf, _T("ClusterEnum()"));
  83. // return ERROR_INVALID_FUNCTION;
  84. // } // if: BARF failure
  85. // else
  86. return ClusterEnum(hClusEnum, dwIndex, lpdwType, lpszName, lpcchName);
  87. } //*** BARFClusterEnum()
  88. HCLUSENUM BARFClusterOpenEnum(HCLUSTER hCluster, DWORD dwType)
  89. {
  90. if (g_barfClusApi.BFail())
  91. {
  92. Trace(g_tagBarf, _T("ClusterOpenEnum()"));
  93. SetLastError(ERROR_INVALID_FUNCTION);
  94. return NULL;
  95. } // if: BARF failure
  96. else
  97. return ClusterOpenEnum(hCluster, dwType);
  98. } //*** BARFClusterOpenEnum()
  99. DWORD BARFClusterResourceTypeControl(
  100. HCLUSTER hCluster,
  101. LPCWSTR lpszResourceTypeName,
  102. HNODE hHostNode,
  103. DWORD dwControlCode,
  104. LPVOID lpInBuffer,
  105. DWORD nInBufferSize,
  106. LPVOID lpOutBuffer,
  107. DWORD nOutBufferSize,
  108. LPDWORD lpBytesReturned
  109. )
  110. {
  111. if (g_barfClusApi.BFail())
  112. {
  113. Trace(g_tagBarf, _T("ClusterResourceTypeControl()"));
  114. return ERROR_INVALID_FUNCTION;
  115. } // if: BARF failure
  116. else
  117. return ClusterResourceTypeControl(
  118. hCluster,
  119. lpszResourceTypeName,
  120. hHostNode,
  121. dwControlCode,
  122. lpInBuffer,
  123. nInBufferSize,
  124. lpOutBuffer,
  125. nOutBufferSize,
  126. lpBytesReturned
  127. );
  128. } //*** BARFClusterResourceTypeControl()
  129. HCHANGE BARFCreateClusterNotifyPort(
  130. HCHANGE hChange,
  131. HCLUSTER hCluster,
  132. DWORD dwFilter,
  133. DWORD_PTR dwNotifyKey
  134. )
  135. {
  136. if (g_barfClusApi.BFail())
  137. {
  138. Trace(g_tagBarf, _T("CreateClusterNotifyPort()"));
  139. SetLastError(ERROR_INVALID_FUNCTION);
  140. return NULL;
  141. } // if: BARF failure
  142. else
  143. return CreateClusterNotifyPort(
  144. hChange,
  145. hCluster,
  146. dwFilter,
  147. dwNotifyKey
  148. );
  149. } //*** BARFCreateClusterNotifyPort()
  150. DWORD BARFCreateClusterResourceType(
  151. HCLUSTER hCluster,
  152. LPCWSTR lpszResourceTypeName,
  153. LPCWSTR lpszDisplayName,
  154. LPCWSTR lpszResourceTypeDll,
  155. DWORD dwLooksAlivePollInterval,
  156. DWORD dwIsAlivePollInterval
  157. )
  158. {
  159. if (g_barfClusApi.BFail())
  160. {
  161. Trace(g_tagBarf, _T("CreateClusterResourceType()"));
  162. return ERROR_INVALID_FUNCTION;
  163. } // if: BARF failure
  164. else
  165. return CreateClusterResourceType(
  166. hCluster,
  167. lpszResourceTypeName,
  168. lpszDisplayName,
  169. lpszDisplayName,
  170. dwLooksAlivePollInterval,
  171. dwIsAlivePollInterval
  172. );
  173. } //*** BARFCreateClusterResourceType()
  174. DWORD BARFDeleteClusterResourceType(HCLUSTER hCluster, LPCWSTR lpszResourceTypeName)
  175. {
  176. if (g_barfClusApi.BFail())
  177. {
  178. Trace(g_tagBarf, _T("DeleteClusterResourceType()"));
  179. return ERROR_INVALID_FUNCTION;
  180. } // if: BARF failure
  181. else
  182. return DeleteClusterResourceType(
  183. hCluster,
  184. lpszResourceTypeName
  185. );
  186. } //*** BARFDeleteClusterResourceType()
  187. DWORD BARFGetClusterInformation(
  188. HCLUSTER hCluster,
  189. LPWSTR lpszClusterName,
  190. LPDWORD lpcchClusterName,
  191. LPCLUSTERVERSIONINFO lpClusterInfo
  192. )
  193. {
  194. if (g_barfClusApi.BFail())
  195. {
  196. Trace(g_tagBarf, _T("GetClusterInformation()"));
  197. return ERROR_INVALID_FUNCTION;
  198. } // if: BARF failure
  199. else
  200. return GetClusterInformation(
  201. hCluster,
  202. lpszClusterName,
  203. lpcchClusterName,
  204. lpClusterInfo
  205. );
  206. } //*** BARFGetClusterInformation()
  207. DWORD BARFGetClusterNotify(
  208. HCHANGE hChange,
  209. DWORD_PTR *lpdwNotifyKey,
  210. LPDWORD lpdwFilterType,
  211. LPWSTR lpszName,
  212. LPDWORD lpcchName,
  213. DWORD dwMilliseconds
  214. )
  215. {
  216. if (g_barfClusApi.BFail())
  217. {
  218. Trace(g_tagBarf, _T("GetClusterNotify()"));
  219. return ERROR_INVALID_FUNCTION;
  220. } // if: BARF failure
  221. else
  222. return GetClusterNotify(
  223. hChange,
  224. lpdwNotifyKey,
  225. lpdwFilterType,
  226. lpszName,
  227. lpcchName,
  228. dwMilliseconds
  229. );
  230. } //*** BARFGetClusterNotify()
  231. DWORD BARFGetClusterQuorumResource(
  232. HCLUSTER hCluster,
  233. LPWSTR lpszResourceName,
  234. LPDWORD lpcbResourceName,
  235. LPWSTR lpszDeviceName,
  236. LPDWORD lpcbDeviceName,
  237. LPDWORD lpdwMaxQuorumLogSize
  238. )
  239. {
  240. if (g_barfClusApi.BFail())
  241. {
  242. Trace(g_tagBarf, _T("GetClusterQuorumResource()"));
  243. return ERROR_INVALID_FUNCTION;
  244. } // if: BARF failure
  245. else
  246. return GetClusterQuorumResource(
  247. hCluster,
  248. lpszResourceName,
  249. lpcbResourceName,
  250. lpszDeviceName,
  251. lpcbDeviceName,
  252. lpdwMaxQuorumLogSize
  253. );
  254. } //*** BARFGetClusterQuorumResource()
  255. HCLUSTER BARFOpenCluster(LPCWSTR lpszClusterName)
  256. {
  257. if (g_barfClusApi.BFail())
  258. {
  259. Trace(g_tagBarf, _T("OpenCluster()"));
  260. SetLastError(ERROR_INVALID_FUNCTION);
  261. return NULL;
  262. } // if: BARF failure
  263. else
  264. return OpenCluster(lpszClusterName);
  265. } //*** BARFOpenCluster()
  266. DWORD BARFRegisterClusterNotify(
  267. HCHANGE hChange,
  268. DWORD dwFilter,
  269. HANDLE hObject,
  270. DWORD_PTR dwNotifyKey
  271. )
  272. {
  273. if (g_barfClusApi.BFail())
  274. {
  275. Trace(g_tagBarf, _T("RegisterClusterNotify()"));
  276. return ERROR_INVALID_FUNCTION;
  277. } // if: BARF failure
  278. else
  279. return RegisterClusterNotify(
  280. hChange,
  281. dwFilter,
  282. hObject,
  283. dwNotifyKey
  284. );
  285. } //*** BARFRegisterClusterNotify()
  286. DWORD BARFSetClusterName(HCLUSTER hCluster, LPCWSTR lpszNewClusterName)
  287. {
  288. if (g_barfClusApi.BFail())
  289. {
  290. Trace(g_tagBarf, _T("SetClusterName()"));
  291. return ERROR_INVALID_FUNCTION;
  292. } // if: BARF failure
  293. else
  294. return SetClusterName(hCluster, lpszNewClusterName);
  295. } //*** BARFSetClusterName()
  296. DWORD BARFSetClusterQuorumResource(
  297. HRESOURCE hResource,
  298. LPCWSTR lpszDeviceName,
  299. DWORD dwMaxQuoLogSize
  300. )
  301. {
  302. if (g_barfClusApi.BFail())
  303. {
  304. Trace(g_tagBarf, _T("SetClusterQuorumResource()"));
  305. return ERROR_INVALID_FUNCTION;
  306. } // if: BARF failure
  307. else
  308. return SetClusterQuorumResource(
  309. hResource,
  310. lpszDeviceName,
  311. dwMaxQuoLogSize
  312. );
  313. } //*** BARFSetClusterQuorumResource()
  314. /////////////////////////////////////////////////////////////////////////////
  315. // Node Management Functions
  316. /////////////////////////////////////////////////////////////////////////////
  317. BOOL BARFCloseClusterNode(HNODE hNode)
  318. {
  319. if (g_barfClusApi.BFail())
  320. {
  321. Trace(g_tagBarf, _T("CloseClusterNode()"));
  322. SetLastError(ERROR_INVALID_FUNCTION);
  323. return FALSE;
  324. } // if: BARF failure
  325. else
  326. return CloseClusterNode(hNode);
  327. } //*** BARFCloseClusterNode()
  328. DWORD BARFClusterNodeControl(
  329. HNODE hNode,
  330. HNODE hHostNode,
  331. DWORD dwControlCode,
  332. LPVOID lpInBuffer,
  333. DWORD nInBufferSize,
  334. LPVOID lpOutBuffer,
  335. DWORD nOutBufferSize,
  336. LPDWORD lpBytesReturned
  337. )
  338. {
  339. if (g_barfClusApi.BFail())
  340. {
  341. Trace(g_tagBarf, _T("ClusterNodeControl()"));
  342. return ERROR_INVALID_FUNCTION;
  343. } // if: BARF failure
  344. else
  345. return ClusterNodeControl(
  346. hNode,
  347. hHostNode,
  348. dwControlCode,
  349. lpInBuffer,
  350. nInBufferSize,
  351. lpOutBuffer,
  352. nOutBufferSize,
  353. lpBytesReturned
  354. );
  355. } //*** BARFClusterNodeControl()
  356. DWORD BARFEvictClusterNode(HNODE hNode)
  357. {
  358. if (g_barfClusApi.BFail())
  359. {
  360. Trace(g_tagBarf, _T("EvictClusterNode()"));
  361. return ERROR_INVALID_FUNCTION;
  362. } // if: BARF failure
  363. else
  364. return EvictClusterNode(hNode);
  365. } //*** BARFEvictClusterNode()
  366. DWORD BARFGetClusterNodeId(HNODE hNode, LPWSTR lpszNodeId, LPDWORD lpcchNodeId)
  367. {
  368. if (g_barfClusApi.BFail())
  369. {
  370. Trace(g_tagBarf, _T("GetClusterNodeId()"));
  371. return ERROR_INVALID_FUNCTION;
  372. } // if: BARF failure
  373. else
  374. return GetClusterNodeId(hNode, lpszNodeId, lpcchNodeId);
  375. } //*** BARFGetClusterNodeId()
  376. CLUSTER_NODE_STATE BARFGetClusterNodeState(HNODE hNode)
  377. {
  378. if (g_barfClusApi.BFail())
  379. {
  380. Trace(g_tagBarf, _T("GetClusterNodeState()"));
  381. SetLastError(ERROR_INVALID_FUNCTION);
  382. return ClusterNodeStateUnknown;
  383. } // if: BARF failure
  384. else
  385. return GetClusterNodeState(hNode);
  386. } //*** BARFGetClusterNodeState()
  387. HNODE BARFOpenClusterNode(HCLUSTER hCluster, LPCWSTR lpszNodeName)
  388. {
  389. if (g_barfClusApi.BFail())
  390. {
  391. Trace(g_tagBarf, _T("OpenClusterNode()"));
  392. SetLastError(ERROR_INVALID_FUNCTION);
  393. return NULL;
  394. } // if: BARF failure
  395. else
  396. return OpenClusterNode(hCluster, lpszNodeName);
  397. } //*** BARFOpenClusterNode()
  398. DWORD BARFPauseClusterNode(HNODE hNode)
  399. {
  400. if (g_barfClusApi.BFail())
  401. {
  402. Trace(g_tagBarf, _T("PauseClusterNode()"));
  403. return ERROR_INVALID_FUNCTION;
  404. } // if: BARF failure
  405. else
  406. return PauseClusterNode(hNode);
  407. } //*** BARFPauseClusterNode()
  408. DWORD BARFResumeClusterNode(HNODE hNode)
  409. {
  410. if (g_barfClusApi.BFail())
  411. {
  412. Trace(g_tagBarf, _T("ResumeClusterNode()"));
  413. return ERROR_INVALID_FUNCTION;
  414. } // if: BARF failure
  415. else
  416. return ResumeClusterNode(hNode);
  417. } //*** BARFResumeClusterNode()
  418. /////////////////////////////////////////////////////////////////////////////
  419. // Group Management Functions
  420. /////////////////////////////////////////////////////////////////////////////
  421. BOOL BARFCloseClusterGroup(HGROUP hGroup)
  422. {
  423. if (g_barfClusApi.BFail())
  424. {
  425. Trace(g_tagBarf, _T("CloseClusterGroup()"));
  426. SetLastError(ERROR_INVALID_FUNCTION);
  427. return FALSE;
  428. } // if: BARF failure
  429. else
  430. return CloseClusterGroup(hGroup);
  431. } //*** BARFCloseClusterGroup()
  432. DWORD BARFClusterGroupCloseEnum(HGROUPENUM hGroupEnum)
  433. {
  434. if (g_barfClusApi.BFail())
  435. {
  436. Trace(g_tagBarf, _T("ClusterGroupCloseEnum()"));
  437. return ERROR_INVALID_FUNCTION;
  438. } // if: BARF failure
  439. else
  440. return ClusterGroupCloseEnum(hGroupEnum);
  441. } //*** BARFClusterGroupCloseEnum()
  442. DWORD BARFClusterGroupControl(
  443. HGROUP hGroup,
  444. HNODE hHostNode,
  445. DWORD dwControlCode,
  446. LPVOID lpInBuffer,
  447. DWORD nInBufferSize,
  448. LPVOID lpOutBuffer,
  449. DWORD nOutBufferSize,
  450. LPDWORD lpBytesReturned
  451. )
  452. {
  453. if (g_barfClusApi.BFail())
  454. {
  455. Trace(g_tagBarf, _T("ClusterGroupControl()"));
  456. return ERROR_INVALID_FUNCTION;
  457. } // if: BARF failure
  458. else
  459. return ClusterGroupControl(
  460. hGroup,
  461. hHostNode,
  462. dwControlCode,
  463. lpInBuffer,
  464. nInBufferSize,
  465. lpOutBuffer,
  466. nOutBufferSize,
  467. lpBytesReturned
  468. );
  469. } //*** BARFClusterGroupControl()
  470. DWORD BARFClusterGroupEnum(
  471. HGROUPENUM hGroupEnum,
  472. DWORD dwIndex,
  473. LPDWORD lpdwType,
  474. LPWSTR lpszResourceName,
  475. LPDWORD lpcchName
  476. )
  477. {
  478. if (g_barfClusApi.BFail())
  479. {
  480. Trace(g_tagBarf, _T("ClusterGroupEnum()"));
  481. return ERROR_INVALID_FUNCTION;
  482. } // if: BARF failure
  483. else
  484. return ClusterGroupEnum(
  485. hGroupEnum,
  486. dwIndex,
  487. lpdwType,
  488. lpszResourceName,
  489. lpcchName
  490. );
  491. } //*** BARFClusterGroupEnum()
  492. HGROUPENUM BARFClusterGroupOpenEnum(HGROUP hGroup, DWORD dwType)
  493. {
  494. if (g_barfClusApi.BFail())
  495. {
  496. Trace(g_tagBarf, _T("ClusterGroupOpenEnum()"));
  497. SetLastError(ERROR_INVALID_FUNCTION);
  498. return NULL;
  499. } // if: BARF failure
  500. else
  501. return ClusterGroupOpenEnum(hGroup, dwType);
  502. } //*** BARFClusterGroupOpenEnum()
  503. HGROUP BARFCreateClusterGroup(HCLUSTER hCluster, LPCWSTR lpszGroupName)
  504. {
  505. if (g_barfClusApi.BFail())
  506. {
  507. Trace(g_tagBarf, _T("CreateClusterGroup()"));
  508. SetLastError(ERROR_INVALID_FUNCTION);
  509. return NULL;
  510. } // if: BARF failure
  511. else
  512. return CreateClusterGroup(hCluster, lpszGroupName);
  513. } //*** BARFCreateClusterGroup()
  514. DWORD BARFDeleteClusterGroup(HGROUP hGroup)
  515. {
  516. if (g_barfClusApi.BFail())
  517. {
  518. Trace(g_tagBarf, _T("DeleteClusterGroup()"));
  519. SetLastError(ERROR_INVALID_FUNCTION);
  520. return NULL;
  521. } // if: BARF failure
  522. else
  523. return DeleteClusterGroup(hGroup);
  524. } //*** BARFDeleteClusterGroup()
  525. CLUSTER_GROUP_STATE BARFGetClusterGroupState(
  526. HGROUP hGroup,
  527. LPWSTR lpszNodeName,
  528. LPDWORD lpcchNodeName
  529. )
  530. {
  531. if (g_barfClusApi.BFail())
  532. {
  533. Trace(g_tagBarf, _T("GetClusterGroupState()"));
  534. SetLastError(ERROR_INVALID_FUNCTION);
  535. return ClusterGroupStateUnknown;
  536. } // if: BARF failure
  537. else
  538. return GetClusterGroupState(
  539. hGroup,
  540. lpszNodeName,
  541. lpcchNodeName
  542. );
  543. } //*** BARFGetClusterGroupState()
  544. DWORD BARFMoveClusterGroup(HGROUP hGroup, HNODE hDestinationNode)
  545. {
  546. if (g_barfClusApi.BFail())
  547. {
  548. Trace(g_tagBarf, _T("MoveClusterGroup()"));
  549. return ERROR_INVALID_FUNCTION;
  550. } // if: BARF failure
  551. else
  552. return MoveClusterGroup(hGroup, hDestinationNode);
  553. } //*** BARFMoveClusterGroup()
  554. DWORD BARFOfflineClusterGroup(HGROUP hGroup)
  555. {
  556. if (g_barfClusApi.BFail())
  557. {
  558. Trace(g_tagBarf, _T("OfflineClusterGroup()"));
  559. return ERROR_INVALID_FUNCTION;
  560. } // if: BARF failure
  561. else
  562. return OfflineClusterGroup(hGroup);
  563. } //*** BARFOfflineClusterGroup()
  564. DWORD BARFOnlineClusterGroup(HGROUP hGroup, HNODE hDestinationNode)
  565. {
  566. if (g_barfClusApi.BFail())
  567. {
  568. Trace(g_tagBarf, _T("OnlineClusterGroup()"));
  569. return ERROR_INVALID_FUNCTION;
  570. } // if: BARF failure
  571. else
  572. return OnlineClusterGroup(hGroup, hDestinationNode);
  573. } //*** BARFOnlineClusterGroup()
  574. HGROUP BARFOpenClusterGroup(HCLUSTER hCluster, LPCWSTR lpszGroupName)
  575. {
  576. if (g_barfClusApi.BFail())
  577. {
  578. Trace(g_tagBarf, _T("OpenClusterGroup()"));
  579. SetLastError(ERROR_INVALID_FUNCTION);
  580. return NULL;
  581. } // if: BARF failure
  582. else
  583. return OpenClusterGroup(hCluster, lpszGroupName);
  584. } //*** BARFOpenClusterGroup()
  585. DWORD BARFSetClusterGroupName(HGROUP hGroup, LPCWSTR lpszGroupName)
  586. {
  587. if (g_barfClusApi.BFail())
  588. {
  589. Trace(g_tagBarf, _T("SetClusterGroupName()"));
  590. return ERROR_INVALID_FUNCTION;
  591. } // if: BARF failure
  592. else
  593. return SetClusterGroupName(hGroup, lpszGroupName);
  594. } //*** BARFSetClusterGroupName()
  595. DWORD BARFSetClusterGroupNodeList(
  596. HGROUP hGroup,
  597. DWORD cNodeCount,
  598. HNODE phNodeList[]
  599. )
  600. {
  601. if (g_barfClusApi.BFail())
  602. {
  603. Trace(g_tagBarf, _T("SetClusterGroupNodeList()"));
  604. return ERROR_INVALID_FUNCTION;
  605. } // if: BARF failure
  606. else
  607. return SetClusterGroupNodeList(
  608. hGroup,
  609. cNodeCount,
  610. phNodeList
  611. );
  612. } //*** BARFSetClusterGroupNodeList()
  613. /////////////////////////////////////////////////////////////////////////////
  614. // Resource Management Functions
  615. /////////////////////////////////////////////////////////////////////////////
  616. DWORD BARFAddClusterResourceDependency(HRESOURCE hResource, HRESOURCE hDependsOn)
  617. {
  618. if (g_barfClusApi.BFail())
  619. {
  620. Trace(g_tagBarf, _T("AddClusterResourceDependency()"));
  621. return ERROR_INVALID_FUNCTION;
  622. } // if: BARF failure
  623. else
  624. return AddClusterResourceDependency(hResource, hDependsOn);
  625. } //*** BARFAddClusterResourceDependency()
  626. DWORD BARFAddClusterResourceNode(HRESOURCE hResource, HNODE hNode)
  627. {
  628. if (g_barfClusApi.BFail())
  629. {
  630. Trace(g_tagBarf, _T("AddClusterResourceNode()"));
  631. return ERROR_INVALID_FUNCTION;
  632. } // if: BARF failure
  633. else
  634. return AddClusterResourceNode(hResource, hNode);
  635. } //*** BARFAddClusterResourceNode()
  636. BOOL BARFCanResourceBeDependent(HRESOURCE hResource, HRESOURCE hResourceDependent)
  637. {
  638. if (g_barfClusApi.BFail())
  639. {
  640. Trace(g_tagBarf, _T("CanResourceBeDependent()"));
  641. SetLastError(ERROR_INVALID_FUNCTION);
  642. return FALSE;
  643. } // if: BARF failure
  644. else
  645. return CanResourceBeDependent(hResource, hResourceDependent);
  646. } //*** BARFCanResourceBeDependent()
  647. DWORD BARFChangeClusterResourceGroup(HRESOURCE hResource, HGROUP hGroup)
  648. {
  649. if (g_barfClusApi.BFail())
  650. {
  651. Trace(g_tagBarf, _T("ChangeClusterResourceGroup()"));
  652. return ERROR_INVALID_FUNCTION;
  653. } // if: BARF failure
  654. else
  655. return ChangeClusterResourceGroup(hResource, hGroup);
  656. } //*** BARFChangeClusterResourceGroup()
  657. BOOL BARFCloseClusterResource(HRESOURCE hResource)
  658. {
  659. if (g_barfClusApi.BFail())
  660. {
  661. Trace(g_tagBarf, _T("CloseClusterResource()"));
  662. SetLastError(ERROR_INVALID_FUNCTION);
  663. return FALSE;
  664. } // if: BARF failure
  665. else
  666. return CloseClusterResource(hResource);
  667. } //*** BARFCloseClusterResource()
  668. DWORD BARFClusterResourceCloseEnum(HRESENUM hResEnum)
  669. {
  670. if (g_barfClusApi.BFail())
  671. {
  672. Trace(g_tagBarf, _T("ClusterResourceCloseEnum()"));
  673. return ERROR_INVALID_FUNCTION;
  674. } // if: BARF failure
  675. else
  676. return ClusterResourceCloseEnum(hResEnum);
  677. } //*** BARFClusterResourceCloseEnum()
  678. DWORD BARFClusterResourceControl(
  679. HRESOURCE hResource,
  680. HNODE hHostNode,
  681. DWORD dwControlCode,
  682. LPVOID lpInBuffer,
  683. DWORD nInBufferSize,
  684. LPVOID lpOutBuffer,
  685. DWORD nOutBufferSize,
  686. LPDWORD lpBytesReturned
  687. )
  688. {
  689. if (g_barfClusApi.BFail())
  690. {
  691. Trace(g_tagBarf, _T("ClusterResourceControl()"));
  692. return ERROR_INVALID_FUNCTION;
  693. } // if: BARF failure
  694. else
  695. return ClusterResourceControl(
  696. hResource,
  697. hHostNode,
  698. dwControlCode,
  699. lpInBuffer,
  700. nInBufferSize,
  701. lpOutBuffer,
  702. nOutBufferSize,
  703. lpBytesReturned
  704. );
  705. } //*** BARFClusterResourceControl()
  706. DWORD BARFClusterResourceEnum(
  707. HRESENUM hResEnum,
  708. DWORD dwIndex,
  709. LPDWORD lpdwType,
  710. LPWSTR lpszName,
  711. LPDWORD lpcchName
  712. )
  713. {
  714. if (g_barfClusApi.BFail())
  715. {
  716. Trace(g_tagBarf, _T("ClusterResourceEnum()"));
  717. return ERROR_INVALID_FUNCTION;
  718. } // if: BARF failure
  719. else
  720. return ClusterResourceEnum(
  721. hResEnum,
  722. dwIndex,
  723. lpdwType,
  724. lpszName,
  725. lpcchName
  726. );
  727. } //*** BARFClusterResourceEnum()
  728. HRESENUM BARFClusterResourceOpenEnum(HRESOURCE hResource, DWORD dwType)
  729. {
  730. if (g_barfClusApi.BFail())
  731. {
  732. Trace(g_tagBarf, _T("ClusterResourceOpenEnum()"));
  733. SetLastError(ERROR_INVALID_FUNCTION);
  734. return NULL;
  735. } // if: BARF failure
  736. else
  737. return ClusterResourceOpenEnum(hResource, dwType);
  738. } //*** BARFClusterResourceOpenEnum()
  739. HRESOURCE BARFCreateClusterResource(
  740. HGROUP hGroup,
  741. LPCWSTR lpszResourceName,
  742. LPCWSTR lpszResourceType,
  743. DWORD dwFlags
  744. )
  745. {
  746. if (g_barfClusApi.BFail())
  747. {
  748. Trace(g_tagBarf, _T("CreateClusterResource()"));
  749. SetLastError(ERROR_INVALID_FUNCTION);
  750. return NULL;
  751. } // if: BARF failure
  752. else
  753. return CreateClusterResource(
  754. hGroup,
  755. lpszResourceName,
  756. lpszResourceType,
  757. dwFlags
  758. );
  759. } //*** BARFCreateClusterResource()
  760. DWORD BARFDeleteClusterResource(HRESOURCE hResource)
  761. {
  762. if (g_barfClusApi.BFail())
  763. {
  764. Trace(g_tagBarf, _T("DeleteClusterResource()"));
  765. return ERROR_INVALID_FUNCTION;
  766. } // if: BARF failure
  767. else
  768. return DeleteClusterResource(hResource);
  769. } //*** BARFDeleteClusterResource()
  770. DWORD BARFFailClusterResource(HRESOURCE hResource)
  771. {
  772. if (g_barfClusApi.BFail())
  773. {
  774. Trace(g_tagBarf, _T("FailClusterResource()"));
  775. return ERROR_INVALID_FUNCTION;
  776. } // if: BARF failure
  777. else
  778. return FailClusterResource(hResource);
  779. } //*** BARFFailClusterResource()
  780. BOOL BARFGetClusterResourceNetworkName(
  781. HRESOURCE hResource,
  782. LPWSTR lpBuffer,
  783. LPDWORD nSize
  784. )
  785. {
  786. if (g_barfClusApi.BFail())
  787. {
  788. Trace(g_tagBarf, _T("GetClusterResourceNetworkName()"));
  789. SetLastError(ERROR_INVALID_FUNCTION);
  790. return NULL;
  791. } // if: BARF failure
  792. else
  793. return GetClusterResourceNetworkName(
  794. hResource,
  795. lpBuffer,
  796. nSize
  797. );
  798. } //*** BARFGetClusterResourceNetworkName()
  799. CLUSTER_RESOURCE_STATE BARFGetClusterResourceState(
  800. HRESOURCE hResource,
  801. LPWSTR lpszNodeName,
  802. LPDWORD lpcchNodeName,
  803. LPWSTR lpszGroupName,
  804. LPDWORD lpcchGroupName
  805. )
  806. {
  807. if (g_barfClusApi.BFail())
  808. {
  809. Trace(g_tagBarf, _T("GetClusterResourceNetworkName()"));
  810. SetLastError(ERROR_INVALID_FUNCTION);
  811. return ClusterResourceStateUnknown;
  812. } // if: BARF failure
  813. else
  814. return GetClusterResourceState(
  815. hResource,
  816. lpszNodeName,
  817. lpcchNodeName,
  818. lpszGroupName,
  819. lpcchGroupName
  820. );
  821. } //*** BARFGetClusterResourceState()
  822. DWORD BARFOfflineClusterResource(HRESOURCE hResource)
  823. {
  824. if (g_barfClusApi.BFail())
  825. {
  826. Trace(g_tagBarf, _T("OfflineClusterResource()"));
  827. return ERROR_INVALID_FUNCTION;
  828. } // if: BARF failure
  829. else
  830. return OfflineClusterResource(hResource);
  831. } //*** BARFOfflineClusterResource()
  832. DWORD BARFOnlineClusterResource(HRESOURCE hResource)
  833. {
  834. if (g_barfClusApi.BFail())
  835. {
  836. Trace(g_tagBarf, _T("OnlineClusterResource()"));
  837. return ERROR_INVALID_FUNCTION;
  838. } // if: BARF failure
  839. else
  840. return OnlineClusterResource(hResource);
  841. } //*** BARFOnlineClusterResource()
  842. HRESOURCE BARFOpenClusterResource(
  843. HCLUSTER hCluster,
  844. LPCWSTR lpszResourceName
  845. )
  846. {
  847. if (g_barfClusApi.BFail())
  848. {
  849. Trace(g_tagBarf, _T("OpenClusterResource()"));
  850. SetLastError(ERROR_INVALID_FUNCTION);
  851. return NULL;
  852. } // if: BARF failure
  853. else
  854. return OpenClusterResource(hCluster, lpszResourceName);
  855. } //*** BARFOpenClusterResource()
  856. DWORD BARFRemoveClusterResourceNode(
  857. HRESOURCE hResource,
  858. HNODE hNode
  859. )
  860. {
  861. if (g_barfClusApi.BFail())
  862. {
  863. Trace(g_tagBarf, _T("RemoveClusterResourceNode()"));
  864. return ERROR_INVALID_FUNCTION;
  865. } // if: BARF failure
  866. else
  867. return RemoveClusterResourceNode(hResource, hNode);
  868. } //*** BARFRemoveClusterResourceNode()
  869. DWORD BARFRemoveClusterResourceDependency(
  870. HRESOURCE hResource,
  871. HRESOURCE hDependsOn
  872. )
  873. {
  874. if (g_barfClusApi.BFail())
  875. {
  876. Trace(g_tagBarf, _T("RemoveClusterResourceDependency()"));
  877. return ERROR_INVALID_FUNCTION;
  878. } // if: BARF failure
  879. else
  880. return RemoveClusterResourceDependency(hResource, hDependsOn);
  881. } //*** BARFRemoveClusterResourceDependency()
  882. DWORD BARFSetClusterResourceName(
  883. HRESOURCE hResource,
  884. LPCWSTR lpszResourceName
  885. )
  886. {
  887. if (g_barfClusApi.BFail())
  888. {
  889. Trace(g_tagBarf, _T("SetClusterResourceName()"));
  890. return ERROR_INVALID_FUNCTION;
  891. } // if: BARF failure
  892. else
  893. return SetClusterResourceName(hResource, lpszResourceName);
  894. } //*** BARFSetClusterResourceName()
  895. /////////////////////////////////////////////////////////////////////////////
  896. // Network Management Functions
  897. /////////////////////////////////////////////////////////////////////////////
  898. HNETWORK BARFOpenClusterNetwork(
  899. HCLUSTER hCluster,
  900. LPCWSTR lpszNetworkName
  901. )
  902. {
  903. if (g_barfClusApi.BFail())
  904. {
  905. Trace(g_tagBarf, _T("OpenClusterNetwork()"));
  906. SetLastError(ERROR_INVALID_FUNCTION);
  907. return NULL;
  908. } // if: BARF failure
  909. else
  910. return OpenClusterNetwork(hCluster, lpszNetworkName);
  911. } //*** BARFOpenClusterNetwork()
  912. BOOL BARFCloseClusterNetwork(HNETWORK hNetwork)
  913. {
  914. if (g_barfClusApi.BFail())
  915. {
  916. Trace(g_tagBarf, _T("CloseClusterNetwork()"));
  917. SetLastError(ERROR_INVALID_FUNCTION);
  918. return FALSE;
  919. } // if: BARF failure
  920. else
  921. return CloseClusterNetwork(hNetwork);
  922. } //*** BARFOpenClusterNetwork()
  923. HNETWORKENUM BARFClusterNetworkOpenEnum(
  924. HNETWORK hNetwork,
  925. DWORD dwType
  926. )
  927. {
  928. if (g_barfClusApi.BFail())
  929. {
  930. Trace(g_tagBarf, _T("ClusterNetworkOpenEnum()"));
  931. SetLastError(ERROR_INVALID_FUNCTION);
  932. return NULL;
  933. } // if: BARF failure
  934. else
  935. return ClusterNetworkOpenEnum(hNetwork, dwType);
  936. } //*** BARFClusterNetworkOpenEnum()
  937. DWORD BARFClusterNetworkEnum(
  938. HNETWORKENUM hNetworkEnum,
  939. DWORD dwIndex,
  940. DWORD * lpdwType,
  941. LPWSTR lpszName,
  942. LPDWORD lpcchName
  943. )
  944. {
  945. if (g_barfClusApi.BFail())
  946. {
  947. Trace(g_tagBarf, _T("ClusterNetworkEnum()"));
  948. return ERROR_INVALID_FUNCTION;
  949. } // if: BARF failure
  950. else
  951. return ClusterNetworkEnum(
  952. hNetworkEnum,
  953. dwIndex,
  954. lpdwType,
  955. lpszName,
  956. lpcchName
  957. );
  958. } //*** BARFClusterNetworkEnum()
  959. DWORD BARFClusterNetworkCloseEnum(HNETWORKENUM hNetworkEnum)
  960. {
  961. if (g_barfClusApi.BFail())
  962. {
  963. Trace(g_tagBarf, _T("ClusterNetworkCloseEnum()"));
  964. return ERROR_INVALID_FUNCTION;
  965. } // if: BARF failure
  966. else
  967. return ClusterNetworkCloseEnum(hNetworkEnum);
  968. } //*** BARFClusterNetworkCloseEnum()
  969. CLUSTER_NETWORK_STATE BARFGetClusterNetworkState(HNETWORK hNetwork)
  970. {
  971. if (g_barfClusApi.BFail())
  972. {
  973. Trace(g_tagBarf, _T("GetClusterNetworkState()"));
  974. SetLastError(ERROR_INVALID_FUNCTION);
  975. return ClusterNetworkStateUnknown;
  976. } // if: BARF failure
  977. else
  978. return GetClusterNetworkState(hNetwork);
  979. } //*** BARFGetClusterNetworkState()
  980. DWORD BARFSetClusterNetworkName(
  981. HNETWORK hNetwork,
  982. LPCWSTR lpszName
  983. )
  984. {
  985. if (g_barfClusApi.BFail())
  986. {
  987. Trace(g_tagBarf, _T("SetClusterNetworkName()"));
  988. return ERROR_INVALID_FUNCTION;
  989. } // if: BARF failure
  990. else
  991. return SetClusterNetworkName(hNetwork, lpszName);
  992. } //*** BARFSetClusterNetworkName()
  993. DWORD BARFClusterNetworkControl(
  994. HNETWORK hNetwork,
  995. HNODE hHostNode,
  996. DWORD dwControlCode,
  997. LPVOID lpInBuffer,
  998. DWORD nInBufferSize,
  999. LPVOID lpOutBuffer,
  1000. DWORD nOutBufferSize,
  1001. LPDWORD lpBytesReturned
  1002. )
  1003. {
  1004. if (g_barfClusApi.BFail())
  1005. {
  1006. Trace(g_tagBarf, _T("ClusterNetworkControl()"));
  1007. return ERROR_INVALID_FUNCTION;
  1008. } // if: BARF failure
  1009. else
  1010. return ClusterNetworkControl(
  1011. hNetwork,
  1012. hHostNode,
  1013. dwControlCode,
  1014. lpInBuffer,
  1015. nInBufferSize,
  1016. lpOutBuffer,
  1017. nOutBufferSize,
  1018. lpBytesReturned
  1019. );
  1020. } //*** BARFClusterNetworkControl()
  1021. /////////////////////////////////////////////////////////////////////////////
  1022. // Network Interface Management Functions
  1023. /////////////////////////////////////////////////////////////////////////////
  1024. HNETINTERFACE BARFOpenClusterNetInterface(
  1025. HCLUSTER hCluster,
  1026. LPCWSTR lpszInterfaceName
  1027. )
  1028. {
  1029. if (g_barfClusApi.BFail())
  1030. {
  1031. Trace(g_tagBarf, _T("OpenClusterNetInterface()"));
  1032. SetLastError(ERROR_INVALID_FUNCTION);
  1033. return NULL;
  1034. } // if: BARF failure
  1035. else
  1036. return OpenClusterNetInterface(hCluster, lpszInterfaceName);
  1037. } //*** BARFOpenClusterNetInterface()
  1038. DWORD BARFGetClusterNetInterface(
  1039. HCLUSTER hCluster,
  1040. LPCWSTR lpszNodeName,
  1041. LPCWSTR lpszNetworkName,
  1042. LPWSTR lpszNetInterfaceName,
  1043. DWORD * lpcchNetInterfaceName
  1044. )
  1045. {
  1046. if (g_barfClusApi.BFail())
  1047. {
  1048. Trace(g_tagBarf, _T("GetClusterNetInterface()"));
  1049. SetLastError(ERROR_INVALID_FUNCTION);
  1050. return NULL;
  1051. } // if: BARF failure
  1052. else
  1053. return GetClusterNetInterface(
  1054. hCluster,
  1055. lpszNodeName,
  1056. lpszNetworkName,
  1057. lpszNetInterfaceName,
  1058. lpcchNetInterfaceName
  1059. );
  1060. } //*** BARFGetClusterNetInterface()
  1061. BOOL BARFCloseClusterNetInterface(HNETINTERFACE hNetInterface)
  1062. {
  1063. if (g_barfClusApi.BFail())
  1064. {
  1065. Trace(g_tagBarf, _T("CloseClusterNetInterface()"));
  1066. SetLastError(ERROR_INVALID_FUNCTION);
  1067. return FALSE;
  1068. } // if: BARF failure
  1069. else
  1070. return CloseClusterNetInterface(hNetInterface);
  1071. } //*** BARFCloseClusterNetInterface()
  1072. CLUSTER_NETINTERFACE_STATE BARFGetClusterNetInterfaceState(HNETINTERFACE hNetInterface)
  1073. {
  1074. if (g_barfClusApi.BFail())
  1075. {
  1076. Trace(g_tagBarf, _T("GetClusterNetInterfaceState()"));
  1077. SetLastError(ERROR_INVALID_FUNCTION);
  1078. return ClusterNetInterfaceStateUnknown;
  1079. } // if: BARF failure
  1080. else
  1081. return GetClusterNetInterfaceState(hNetInterface);
  1082. } //*** BARFGetClusterNetInterfaceState()
  1083. DWORD BARFClusterNetInterfaceControl(
  1084. HNETINTERFACE hNetInterface,
  1085. HNODE hHostNode,
  1086. DWORD dwControlCode,
  1087. LPVOID lpInBuffer,
  1088. DWORD nInBufferSize,
  1089. LPVOID lpOutBuffer,
  1090. DWORD nOutBufferSize,
  1091. LPDWORD lpBytesReturned
  1092. )
  1093. {
  1094. if (g_barfClusApi.BFail())
  1095. {
  1096. Trace(g_tagBarf, _T("ClusterNetInterfaceControl()"));
  1097. return ERROR_INVALID_FUNCTION;
  1098. } // if: BARF failure
  1099. else
  1100. return ClusterNetInterfaceControl(
  1101. hNetInterface,
  1102. hHostNode,
  1103. dwControlCode,
  1104. lpInBuffer,
  1105. nInBufferSize,
  1106. lpOutBuffer,
  1107. nOutBufferSize,
  1108. lpBytesReturned
  1109. );
  1110. } //*** BARFClusterNetInterfaceControl()
  1111. /////////////////////////////////////////////////////////////////////////////
  1112. // Cluster Database Management Functions
  1113. /////////////////////////////////////////////////////////////////////////////
  1114. LONG BARFClusterRegCloseKey(HKEY hKey)
  1115. {
  1116. if (g_barfClusApi.BFail())
  1117. {
  1118. Trace(g_tagBarf, _T("ClusterRegCloseKey()"));
  1119. return ERROR_INVALID_FUNCTION;
  1120. } // if: BARF failure
  1121. else
  1122. return ClusterRegCloseKey(hKey);
  1123. } //*** BARFClusterRegCloseKey()
  1124. LONG BARFClusterRegCreateKey(
  1125. HKEY hKey,
  1126. LPCWSTR lpszSubKey,
  1127. DWORD dwOptions,
  1128. REGSAM samDesired,
  1129. LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  1130. PHKEY phkResult,
  1131. LPDWORD lpdwDisposition
  1132. )
  1133. {
  1134. if (g_barfClusApi.BFail())
  1135. {
  1136. Trace(g_tagBarf, _T("ClusterRegCreateKey()"));
  1137. return ERROR_INVALID_FUNCTION;
  1138. } // if: BARF failure
  1139. else
  1140. return ClusterRegCreateKey(
  1141. hKey,
  1142. lpszSubKey,
  1143. dwOptions,
  1144. samDesired,
  1145. lpSecurityAttributes,
  1146. phkResult,
  1147. lpdwDisposition
  1148. );
  1149. } //*** BARFClusterRegCreateKey()
  1150. LONG BARFClusterRegDeleteKey(
  1151. HKEY hKey,
  1152. LPCWSTR lpszSubKey
  1153. )
  1154. {
  1155. if (g_barfClusApi.BFail())
  1156. {
  1157. Trace(g_tagBarf, _T("ClusterRegDeleteKey()"));
  1158. return ERROR_INVALID_FUNCTION;
  1159. } // if: BARF failure
  1160. else
  1161. return ClusterRegDeleteKey(hKey, lpszSubKey);
  1162. } //*** BARFClusterRegDeleteKey()
  1163. DWORD BARFClusterRegDeleteValue(
  1164. HKEY hKey,
  1165. LPCWSTR lpszValueName
  1166. )
  1167. {
  1168. if (g_barfClusApi.BFail())
  1169. {
  1170. Trace(g_tagBarf, _T("ClusterRegDeleteValue()"));
  1171. return ERROR_INVALID_FUNCTION;
  1172. } // if: BARF failure
  1173. else
  1174. return ClusterRegDeleteValue(hKey, lpszValueName);
  1175. } //*** BARFClusterRegDeleteValue()
  1176. LONG BARFClusterRegEnumKey(
  1177. HKEY hKey,
  1178. DWORD dwIndex,
  1179. LPWSTR lpszName,
  1180. LPDWORD lpcchName,
  1181. PFILETIME lpftLastWriteTime
  1182. )
  1183. {
  1184. if (g_barfClusApi.BFail())
  1185. {
  1186. Trace(g_tagBarf, _T("ClusterRegEnumKey()"));
  1187. return ERROR_INVALID_FUNCTION;
  1188. } // if: BARF failure
  1189. else
  1190. return ClusterRegEnumKey(
  1191. hKey,
  1192. dwIndex,
  1193. lpszName,
  1194. lpcchName,
  1195. lpftLastWriteTime
  1196. );
  1197. } //*** BARFClusterRegEnumKey()
  1198. DWORD BARFClusterRegEnumValue(
  1199. HKEY hKey,
  1200. DWORD dwIndex,
  1201. LPWSTR lpszValueName,
  1202. LPDWORD lpcchValueName,
  1203. LPDWORD lpdwType,
  1204. LPBYTE lpbData,
  1205. LPDWORD lpcbData
  1206. )
  1207. {
  1208. if (g_barfClusApi.BFail())
  1209. {
  1210. Trace(g_tagBarf, _T("ClusterRegEnumValue()"));
  1211. return ERROR_INVALID_FUNCTION;
  1212. } // if: BARF failure
  1213. else
  1214. return ClusterRegEnumValue(
  1215. hKey,
  1216. dwIndex,
  1217. lpszValueName,
  1218. lpcchValueName,
  1219. lpdwType,
  1220. lpbData,
  1221. lpcbData
  1222. );
  1223. } //*** BARFClusterRegEnumValue()
  1224. LONG BARFClusterRegGetKeySecurity(
  1225. HKEY hKey,
  1226. SECURITY_INFORMATION SecurityInformation,
  1227. PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1228. LPDWORD lpcbSecurityDescriptor
  1229. )
  1230. {
  1231. if (g_barfClusApi.BFail())
  1232. {
  1233. Trace(g_tagBarf, _T("ClusterRegGetKeySecurity()"));
  1234. return ERROR_INVALID_FUNCTION;
  1235. } // if: BARF failure
  1236. else
  1237. return ClusterRegGetKeySecurity(
  1238. hKey,
  1239. SecurityInformation,
  1240. pSecurityDescriptor,
  1241. lpcbSecurityDescriptor
  1242. );
  1243. } //*** BARFClusterRegGetKeySecurity()
  1244. LONG BARFClusterRegOpenKey(
  1245. HKEY hKey,
  1246. LPCWSTR lpszSubKey,
  1247. REGSAM samDesired,
  1248. PHKEY phkResult
  1249. )
  1250. {
  1251. if (g_barfClusApi.BFail())
  1252. {
  1253. Trace(g_tagBarf, _T("ClusterRegOpenKey()"));
  1254. return ERROR_INVALID_FUNCTION;
  1255. } // if: BARF failure
  1256. else
  1257. return ClusterRegOpenKey(
  1258. hKey,
  1259. lpszSubKey,
  1260. samDesired,
  1261. phkResult
  1262. );
  1263. } //*** BARFClusterRegOpenKey()
  1264. LONG BARFClusterRegQueryInfoKey(
  1265. HKEY hKey,
  1266. LPDWORD lpcSubKeys,
  1267. LPDWORD lpcbMaxSubKeyLen,
  1268. LPDWORD lpcValues,
  1269. LPDWORD lpcbMaxValueNameLen,
  1270. LPDWORD lpcbMaxValueLen,
  1271. LPDWORD lpcbSecurityDescriptor,
  1272. PFILETIME lpftLastWriteTime
  1273. )
  1274. {
  1275. if (g_barfClusApi.BFail())
  1276. {
  1277. Trace(g_tagBarf, _T("ClusterRegQueryInfoKey()"));
  1278. return ERROR_INVALID_FUNCTION;
  1279. } // if: BARF failure
  1280. else
  1281. return ClusterRegQueryInfoKey(
  1282. hKey,
  1283. lpcSubKeys,
  1284. lpcbMaxSubKeyLen,
  1285. lpcValues,
  1286. lpcbMaxValueNameLen,
  1287. lpcbMaxValueLen,
  1288. lpcbSecurityDescriptor,
  1289. lpftLastWriteTime
  1290. );
  1291. } //*** BARFClusterRegQueryInfoKey()
  1292. LONG BARFClusterRegQueryValue(
  1293. HKEY hKey,
  1294. LPCWSTR lpszValueName,
  1295. LPDWORD lpdwValueType,
  1296. LPBYTE lpbData,
  1297. LPDWORD lpcbData
  1298. )
  1299. {
  1300. if (g_barfClusApi.BFail())
  1301. {
  1302. Trace(g_tagBarf, _T("ClusterRegQueryValue()"));
  1303. return ERROR_INVALID_FUNCTION;
  1304. } // if: BARF failure
  1305. else
  1306. return ClusterRegQueryValue(
  1307. hKey,
  1308. lpszValueName,
  1309. lpdwValueType,
  1310. lpbData,
  1311. lpcbData
  1312. );
  1313. } //*** BARFClusterRegQueryValue()
  1314. LONG BARFClusterRegSetKeySecurity(
  1315. HKEY hKey,
  1316. SECURITY_INFORMATION SecurityInformation,
  1317. PSECURITY_DESCRIPTOR pSecurityDescriptor
  1318. )
  1319. {
  1320. if (g_barfClusApi.BFail())
  1321. {
  1322. Trace(g_tagBarf, _T("ClusterRegSetKeySecurity()"));
  1323. return ERROR_INVALID_FUNCTION;
  1324. } // if: BARF failure
  1325. else
  1326. return ClusterRegSetKeySecurity(
  1327. hKey,
  1328. SecurityInformation,
  1329. pSecurityDescriptor
  1330. );
  1331. } //*** BARFClusterRegSetKeySecurity()
  1332. DWORD BARFClusterRegSetValue(
  1333. HKEY hKey,
  1334. LPCWSTR lpszValueName,
  1335. DWORD dwType,
  1336. CONST BYTE * lpbData,
  1337. DWORD cbData
  1338. )
  1339. {
  1340. if (g_barfClusApi.BFail())
  1341. {
  1342. Trace(g_tagBarf, _T("ClusterRegSetValue()"));
  1343. return ERROR_INVALID_FUNCTION;
  1344. } // if: BARF failure
  1345. else
  1346. return ClusterRegSetValue(
  1347. hKey,
  1348. lpszValueName,
  1349. dwType,
  1350. lpbData,
  1351. cbData
  1352. );
  1353. } //*** BARFClusterRegSetValue()
  1354. HKEY BARFGetClusterGroupKey(
  1355. HGROUP hGroup,
  1356. REGSAM samDesired
  1357. )
  1358. {
  1359. if (g_barfClusApi.BFail())
  1360. {
  1361. Trace(g_tagBarf, _T("GetClusterGroupKey()"));
  1362. SetLastError(ERROR_INVALID_FUNCTION);
  1363. return NULL;
  1364. } // if: BARF failure
  1365. else
  1366. return GetClusterGroupKey(hGroup, samDesired);
  1367. } //*** BARFGetClusterGroupKey()
  1368. HKEY BARFGetClusterKey(
  1369. HCLUSTER hCluster,
  1370. REGSAM samDesired
  1371. )
  1372. {
  1373. if (g_barfClusApi.BFail())
  1374. {
  1375. Trace(g_tagBarf, _T("GetClusterKey()"));
  1376. SetLastError(ERROR_INVALID_FUNCTION);
  1377. return NULL;
  1378. } // if: BARF failure
  1379. else
  1380. return GetClusterKey(hCluster, samDesired);
  1381. } //*** BARFGetClusterKey()
  1382. HKEY BARFGetClusterNodeKey(
  1383. HNODE hNode,
  1384. REGSAM samDesired
  1385. )
  1386. {
  1387. if (g_barfClusApi.BFail())
  1388. {
  1389. Trace(g_tagBarf, _T("GetClusterNodeKey()"));
  1390. SetLastError(ERROR_INVALID_FUNCTION);
  1391. return NULL;
  1392. } // if: BARF failure
  1393. else
  1394. return GetClusterNodeKey(hNode, samDesired);
  1395. } //*** BARFGetClusterNodeKey()
  1396. HKEY BARFGetClusterResourceKey(
  1397. HRESOURCE hResource,
  1398. REGSAM samDesired
  1399. )
  1400. {
  1401. if (g_barfClusApi.BFail())
  1402. {
  1403. Trace(g_tagBarf, _T("GetClusterResourceKey()"));
  1404. SetLastError(ERROR_INVALID_FUNCTION);
  1405. return NULL;
  1406. } // if: BARF failure
  1407. else
  1408. return GetClusterResourceKey(hResource, samDesired);
  1409. } //*** BARFGetClusterResourceKey()
  1410. HKEY BARFGetClusterResourceTypeKey(
  1411. HCLUSTER hCluster,
  1412. LPCWSTR lpszTypeName,
  1413. REGSAM samDesired
  1414. )
  1415. {
  1416. if (g_barfClusApi.BFail())
  1417. {
  1418. Trace(g_tagBarf, _T("GetClusterResourceTypeKey()"));
  1419. SetLastError(ERROR_INVALID_FUNCTION);
  1420. return NULL;
  1421. } // if: BARF failure
  1422. else
  1423. return GetClusterResourceTypeKey(hCluster, lpszTypeName, samDesired);
  1424. } //*** BARFGetClusterResourceTypeKey()
  1425. HKEY BARFGetClusterNetworkKey(
  1426. HNETWORK hNetwork,
  1427. REGSAM samDesired
  1428. )
  1429. {
  1430. if (g_barfClusApi.BFail())
  1431. {
  1432. Trace(g_tagBarf, _T("GetClusterNetworkKey()"));
  1433. SetLastError(ERROR_INVALID_FUNCTION);
  1434. return NULL;
  1435. } // if: BARF failure
  1436. else
  1437. return GetClusterNetworkKey(hNetwork, samDesired);
  1438. } //*** BARFGetClusterNetworkKey()
  1439. HKEY BARFGetClusterNetInterfaceKey(
  1440. HNETINTERFACE hNetInterface,
  1441. REGSAM samDesired
  1442. )
  1443. {
  1444. if (g_barfClusApi.BFail())
  1445. {
  1446. Trace(g_tagBarf, _T("GetClusterNetInterfaceKey()"));
  1447. SetLastError(ERROR_INVALID_FUNCTION);
  1448. return NULL;
  1449. } // if: BARF failure
  1450. else
  1451. return GetClusterNetInterfaceKey(hNetInterface, samDesired);
  1452. } //*** BARFGetClusterNetInterfaceKey()
  1453. #endif // _DEBUG