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.

1061 lines
33 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000-2002 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ClusCfgPrivate.idl
  7. //
  8. // Description:
  9. // This file is the IDL file for private interfaces between components
  10. // of the Cluster Configuration Wizard.
  11. //
  12. //
  13. // Maintained By:
  14. // Galen Barbee (GalenB) 29-JUN-2000
  15. //
  16. //////////////////////////////////////////////////////////////////////////////
  17. // Comments for generated files
  18. cpp_quote( "//////////////////////////////////////////////////////////////////////////////" )
  19. cpp_quote( "//" )
  20. cpp_quote( "// Copyright (c) 2000-2002 Microsoft Corporation" )
  21. cpp_quote( "//" )
  22. cpp_quote( "// Remarks:" )
  23. cpp_quote( "// These are private interfaces and should not be published outside of Microsoft!" )
  24. cpp_quote( "//////////////////////////////////////////////////////////////////////////////" )
  25. //////////////////////////////////////////////////////////////////////////////
  26. // Imported Files
  27. //////////////////////////////////////////////////////////////////////////////
  28. import "unknwn.idl";
  29. import "objidl.idl";
  30. import "ClusCfgServer.idl";
  31. import "ClusCfgClient.idl";
  32. //////////////////////////////////////////////////////////////////////////////
  33. // Forward Declarations
  34. //////////////////////////////////////////////////////////////////////////////
  35. interface IClusCfgServer;
  36. interface IClusCfgPollingCallback;
  37. interface IClusCfgPollingCallbackInfo;
  38. interface IExtendObjectManager;
  39. interface IClusCfgResTypeServicesInitialize;
  40. interface IClusCfgClusterConnection;
  41. interface IClusCfgSetCredentials;
  42. interface IClusCfgVerify;
  43. interface IClusCfgClusterConnection;
  44. interface IClusCfgBaseCluster;
  45. //****************************************************************************
  46. //++
  47. //
  48. // interface IClusCfgServer
  49. //
  50. // Description:
  51. // The IClusCfgServer interface provides the functions
  52. // required to gather information about storage devices, networks
  53. // and the operating system on a computer. It also exposes functions
  54. // to form a cluster on this computer, to add this node to a cluster,
  55. // to remove this node from a cluster, etc.
  56. //
  57. //--
  58. //****************************************************************************
  59. [
  60. object,
  61. uuid( 4C06EAE6-990E-4051-8AA1-AD4B4EAE9CAF ),
  62. async_uuid( 2A1640AA-4561-4a08-B5D9-0AA38C6BE628 ),
  63. pointer_default( unique )
  64. ]
  65. interface IClusCfgServer : IUnknown
  66. {
  67. //////////////////////////////////////////////////////////////////////////
  68. //
  69. // STDMETHOD
  70. // GetClusterNodeInfo(
  71. // [ out ] IClusCfgNodeInfo ** ppClusterNodeInfoOut
  72. // )
  73. //
  74. // Description:
  75. // Get information about the computer on which this object is present.
  76. //
  77. // Parameter:
  78. // ppClusterNodeInfoOut
  79. // Pointer to the IClusterNodeInfo interface.
  80. //
  81. // Return Values:
  82. // S_OK
  83. // The call succeeded.
  84. //
  85. // other HRESULTs
  86. // The call failed.
  87. //
  88. //////////////////////////////////////////////////////////////////////////
  89. HRESULT
  90. GetClusterNodeInfo( [ out ] IClusCfgNodeInfo ** ppClusterNodeInfoOut );
  91. //////////////////////////////////////////////////////////////////////////
  92. //
  93. // STDMETHOD
  94. // GetManagedResourcesEnum(
  95. // [ out ] IEnumClusCfgManagedResources ** ppEnumManagedResourcesOut
  96. // )
  97. //
  98. // Description:
  99. // Get an enumeration of the resources on this computer that can be managed
  100. // by the cluster service. This is an enumeration of enumerators of the
  101. // resources.
  102. //
  103. // Parameter:
  104. // ppEnumManagedResourcesEnumOut
  105. // Pointer to the IEnumClusCfgManagedResources interface.
  106. //
  107. // Return Values:
  108. // S_OK
  109. // The call succeeded.
  110. //
  111. // other HRESULTs
  112. // The call failed.
  113. //
  114. //////////////////////////////////////////////////////////////////////////
  115. HRESULT
  116. GetManagedResourcesEnum(
  117. [ out ] IEnumClusCfgManagedResources ** ppEnumManagedResourcesOut
  118. );
  119. //////////////////////////////////////////////////////////////////////////
  120. //
  121. // STDMETHOD
  122. // GetNetworksEnum(
  123. // [ out ] IEnumClusCfgNetworks ** ppEnumNetworksOut
  124. // )
  125. //
  126. // Description:
  127. // Get an enumeration of all the networks on this computer.
  128. //
  129. // Parameter:
  130. // ppEnumNetworksOut
  131. // Pointer to the IEnumClusCfgNetworks inteface.
  132. //
  133. // Return Values:
  134. // S_OK
  135. // The call succeeded.
  136. //
  137. // other HRESULTs
  138. // The call failed.
  139. //
  140. //////////////////////////////////////////////////////////////////////////
  141. HRESULT
  142. GetNetworksEnum( [ out ] IEnumClusCfgNetworks ** ppEnumNetworksOut );
  143. //////////////////////////////////////////////////////////////////////////
  144. //
  145. // STDMETHOD
  146. // CommitChanges( void )
  147. //
  148. // Description:
  149. // Commit the changes to the node and join/form the cluster.
  150. //
  151. // Return Values:
  152. // S_OK
  153. // The commit succeeded.
  154. //
  155. // other HRESULTs
  156. // The commit failed.
  157. //
  158. //////////////////////////////////////////////////////////////////////////
  159. HRESULT
  160. CommitChanges( void );
  161. //
  162. // Binding String
  163. //
  164. //////////////////////////////////////////////////////////////////////////
  165. //
  166. // STDMETHOD
  167. // GetBindingString(
  168. // [ out ] BSTR * pbstrBindingStringOut
  169. // )
  170. //
  171. // Description:
  172. // Retrieves the binding string (IP address) used to connect
  173. // to this server.
  174. //
  175. // Notes:
  176. // Retrieves the binding string used to connect to the remote server.
  177. // If it returns NULL/S_FALSE, no binding was needed as it was a local
  178. // connection.
  179. //
  180. // Parameter:
  181. // pbstrBindingStringOut
  182. // Pointer to a BSTR. This should be freed by the caller by calling
  183. // SysFreeString( ).
  184. //
  185. // Return Values:
  186. // S_OK
  187. // Successly returned binding connection.
  188. //
  189. // S_FALSE
  190. // Local connection was established - no binding string available.
  191. //
  192. // E_OUTOFMEMORY
  193. // Out of memory.
  194. //
  195. // other HRESULTs.
  196. //
  197. //////////////////////////////////////////////////////////////////////////
  198. HRESULT
  199. GetBindingString( [ out ] BSTR * pbstrBindingStringOut );
  200. //////////////////////////////////////////////////////////////////////////
  201. //
  202. // STDMETHOD
  203. // SetBindingString(
  204. // [ in ] LPCWSTR pcszBindingStringIn
  205. // )
  206. //
  207. // Description:
  208. // Stores the binding string for this server.
  209. //
  210. // Notes:
  211. //
  212. // Parameter:
  213. // pcszBindingStringIn
  214. // The binding string to use when connecting to this server.
  215. //
  216. // Return Value:
  217. // S_OK
  218. // Success.
  219. //
  220. // E_OUTOFMEMORY
  221. // Out of memory.
  222. //
  223. // other HRESULT
  224. // The call failed.
  225. //
  226. //////////////////////////////////////////////////////////////////////////
  227. HRESULT
  228. SetBindingString(
  229. [ in, pointer_default( unique ) ] LPCWSTR pcszBindingStringIn
  230. );
  231. }; //*** interface IClusCfgServer
  232. //****************************************************************************
  233. //++
  234. //
  235. // interface IClusCfgPollingCallback
  236. //
  237. // Description:
  238. // This interface is used to callback to the client to indicate
  239. // status or progess (or both) about a task being completed on the
  240. // server.
  241. //
  242. //--
  243. //****************************************************************************
  244. [
  245. object,
  246. uuid( C72DB1FD-51A2-43e6-B708-D9DB7DA79630 ),
  247. async_uuid( FBE17C4B-3B3D-48c1-A8E8-C29098C9919B ),
  248. pointer_default( unique )
  249. ]
  250. interface IClusCfgPollingCallback : IUnknown
  251. {
  252. //////////////////////////////////////////////////////////////////////////
  253. //
  254. // STDMETHOD
  255. // GetStatusReport(
  256. // [ out ] BSTR * pbstrNodeNameOut,
  257. // [ out ] CLSID * pclsidTaskMajorOut,
  258. // [ out ] CLSID * pclsidTaskMinorOut,
  259. // [ out ] ULONG * pulMinOut,
  260. // [ out ] ULONG * pulMaxOut,
  261. // [ out ] ULONG * pulCurrentOut,
  262. // [ out ] HRESULT * phrStatusOut,
  263. // [ out ] BSTR * pbstrDescriptionOut,
  264. // [ out ] FILETIME * pftTimeOut,
  265. // [ out ] BSTR * pbstrReferenceOut
  266. // )
  267. //
  268. // Description:
  269. // This method retreies a queued status report from the client.
  270. //
  271. // Parameters:
  272. // pbstrNodeNameOut
  273. // The name of the node (server) that sent the report.
  274. //
  275. // pclsidTaskMajorOut
  276. // CLSID of the major task item to give status about. For the
  277. // wizard, this indicates which node in the tree view control
  278. // to publish this status message under. If clsidTaskMajorIn
  279. // equals TASKID_Major_Client_Log, TASKID_Major_Server_Log, or
  280. // TASKID_Major_Client_And_Server_Log, only a log entry will be
  281. // made.
  282. //
  283. // pclsidTaskMinorOut
  284. // CLSID of the minor task to give status about. These should be
  285. // unique to each sub-task and message.
  286. //
  287. // pulMinOut
  288. // The min value of progress.
  289. //
  290. // pulMaxOut
  291. // The max value of progress.
  292. //
  293. // pulCurrentOut
  294. // The current value of progress.
  295. //
  296. // phrStatusOut
  297. // The current status.
  298. //
  299. // pbstrDescriptionOut
  300. // The description of the status. Can be NULL to indicate that nothing
  301. // needs to be passed.
  302. //
  303. // pftTimeOut
  304. // Time that this report was created.
  305. //
  306. // pbstrReferenceOut
  307. // Optional reference data, additional context, URL, etc. that
  308. // might better help explain the problem is this is an error
  309. // report.
  310. //
  311. // Return Values:
  312. // S_OK
  313. // The call succeeded.
  314. //
  315. // other HRESULTs
  316. // The call failed.
  317. //
  318. //////////////////////////////////////////////////////////////////////////
  319. HRESULT
  320. GetStatusReport(
  321. [ out ] BSTR * pbstrNodeNameOut,
  322. [ out ] CLSID * pclsidTaskMajorOut,
  323. [ out ] CLSID * pclsidTaskMinorOut,
  324. [ out ] ULONG * pulMinOut,
  325. [ out ] ULONG * pulMaxOut,
  326. [ out ] ULONG * pulCurrentOut,
  327. [ out ] HRESULT * phrStatusOut,
  328. [ out ] BSTR * pbstrDescriptionOut,
  329. [ out ] FILETIME * pftTimeOut,
  330. [ out ] BSTR * pbstrReferenceOut
  331. );
  332. //////////////////////////////////////////////////////////////////////////
  333. //
  334. // STDMETHOD
  335. // SetHResult(
  336. // [ in ] HRESULT hrIn
  337. // )
  338. //
  339. // Description:
  340. // Set the status of the SendStatusReport() back into the sender.
  341. //
  342. // Parameters:
  343. //
  344. // hrIn
  345. // The status of this call from the SendStatusReport() in
  346. // the middle tier.
  347. //
  348. // Return Values:
  349. // S_OK
  350. // The call succeeded.
  351. //
  352. // other HRESULTs
  353. // The call failed.
  354. //
  355. //////////////////////////////////////////////////////////////////////////
  356. HRESULT
  357. SetHResult(
  358. [ in ] HRESULT hrIn
  359. );
  360. }; //*** interface IClusCfgPollingCallback
  361. //****************************************************************************
  362. //++
  363. //
  364. // interface IClusCfgPollingCallbackInfo
  365. //
  366. // Description:
  367. // This interface is used to callback to the client to indicate
  368. // status or progess (or both) about a task being completed on the
  369. // server.
  370. //
  371. //--
  372. //****************************************************************************
  373. [
  374. object,
  375. uuid( 2AF55DA7-CB6F-40de-BB11-6673464B2C54 ),
  376. pointer_default( unique )
  377. ]
  378. interface IClusCfgPollingCallbackInfo : IUnknown
  379. {
  380. //////////////////////////////////////////////////////////////////////////
  381. //
  382. // STDMETHOD
  383. // GetCallback(
  384. // [ out ] IClusCfgPollingCallback ** ppiccpcOut
  385. // )
  386. //
  387. // Description:
  388. // Get a pointer to the polling callback object.
  389. //
  390. // Parameters:
  391. // piccpcOut
  392. // Pointer to the polling callback object.
  393. //
  394. // Return Values:
  395. // S_OK
  396. // The call succeeded.
  397. //
  398. // other HRESULTs
  399. // The call failed.
  400. //
  401. //////////////////////////////////////////////////////////////////////////
  402. HRESULT
  403. GetCallback(
  404. [ out ] IClusCfgPollingCallback ** ppiccpcOut
  405. );
  406. //////////////////////////////////////////////////////////////////////////
  407. //
  408. // STDMETHOD
  409. // SetPollingMode(
  410. // [ in ] BOOL fPollingModeIn
  411. // )
  412. //
  413. // Description:
  414. // Set the polling mode of the callback.
  415. //
  416. // Parameters:
  417. // fPollingModeIn
  418. // If true do polling, if false do not do polling.
  419. //
  420. // Return Values:
  421. // S_OK
  422. // The call succeeded.
  423. //
  424. // other HRESULTs
  425. // The call failed.
  426. //
  427. //////////////////////////////////////////////////////////////////////////
  428. HRESULT
  429. SetPollingMode(
  430. [ in ] BOOL fPollingModeIn
  431. );
  432. }; //*** interface IClusCfgPollingCallbackInfo
  433. //****************************************************************************
  434. //++
  435. //
  436. // interface IExtendObjectManager
  437. //
  438. // Description:
  439. // TODO: gpease 21-JUL-2000
  440. // Write a description.
  441. //
  442. //--
  443. //****************************************************************************
  444. [
  445. object,
  446. uuid( ca7bb0b9-700c-4dc5-991e-75f9e65ee975 ),
  447. local,
  448. pointer_default( unique )
  449. ]
  450. interface
  451. IExtendObjectManager : IUnknown
  452. {
  453. //////////////////////////////////////////////////////////////////////////
  454. //
  455. // STDMETHOD
  456. // IExtendObjectManager::FindObject(
  457. // [ in ] OBJECTCOOKIE cookieIn
  458. // , [ in ] REFCLSID rclsidTypeIn
  459. // , [ in ] LPCWSTR pcszNameIn
  460. // , [ out ] LPUNKNOWN * ppunkOut
  461. // )
  462. //
  463. // Description:
  464. // Lookups and retrieves information about an object that has the
  465. // type "dmtIn" and has the name "pcszName". It will return an
  466. // interface for the format specified by "dmfIn".
  467. //
  468. // Arguments:
  469. // cookieIn
  470. // Cookie that represents this object in the Object Manager.
  471. //
  472. // dmtIn
  473. // The type of the object to find.
  474. //
  475. // pcszName
  476. // The name of the object to find.
  477. //
  478. // ppunkOut
  479. // The requested data. NULL in indicates no data returned.
  480. //
  481. // Return Values:
  482. // S_OK
  483. // Success. Data format initialized and ready.
  484. //
  485. // S_FALSE
  486. // Success. But the data format does not want to be persistent.
  487. // This will cause the Object Manager to generate a new object
  488. // everytime.
  489. //
  490. // E_PENDING
  491. // The interface returned is valid, but the data is not available
  492. // yet. To indicate that the data is ready, send a notification
  493. // updating the status of the cookie (cookieIn).
  494. //
  495. // other HRESULTs.
  496. // The call failed.
  497. //
  498. //////////////////////////////////////////////////////////////////////////
  499. HRESULT
  500. FindObject (
  501. [ in ] OBJECTCOOKIE cookieIn
  502. , [ in ] REFCLSID rclsidTypeIn
  503. , [ in, pointer_default( unique ) ] LPCWSTR pcszNameIn
  504. , [ out ] LPUNKNOWN * ppunkOut
  505. );
  506. }; // interface IExtendObjectManager
  507. //****************************************************************************
  508. //++
  509. //
  510. // interface IClusCfgResTypeServicesInitialize
  511. //
  512. // Description:
  513. // This interface is used to initialize the resource type services component.
  514. //
  515. //--
  516. //****************************************************************************
  517. [
  518. object,
  519. uuid( 6E109698-DFC4-4471-ACE1-0414931B3BB3 ),
  520. pointer_default( unique )
  521. ]
  522. interface IClusCfgResTypeServicesInitialize : IUnknown
  523. {
  524. //////////////////////////////////////////////////////////////////////////////
  525. //++
  526. //
  527. // IClusCfgResTypeServicesInitialize::SetParameters(
  528. // [ in ] IClusCfgClusterInfo * pccciIn
  529. // )
  530. //
  531. // Description:
  532. // Set the parameters required by this component.
  533. //
  534. // Arguments:
  535. // pccciIn
  536. // Pointer to an interface that provides information about the cluster
  537. // being configured.
  538. //
  539. // Return Value:
  540. // S_OK
  541. // If the call succeeded
  542. //
  543. // Other HRESULTs
  544. // If the call failed.
  545. //
  546. //--
  547. //////////////////////////////////////////////////////////////////////////////
  548. HRESULT
  549. SetParameters(
  550. [ in ] IClusCfgClusterInfo * pccciIn
  551. );
  552. }; //*** interface IClusCfgResTypeServicesInitialize
  553. //****************************************************************************
  554. //++
  555. //
  556. // interface IClusCfgSetCredentials
  557. //
  558. //
  559. //--
  560. //****************************************************************************
  561. [
  562. object,
  563. uuid( 58E6E5B9-4788-4d9a-8255-1E274E5DCCB0 ),
  564. pointer_default( unique )
  565. ]
  566. interface IClusCfgSetCredentials : IUnknown
  567. {
  568. HRESULT
  569. SetDomainCredentials(
  570. [ in, pointer_default( unique ) ] LPCWSTR pszCredentials
  571. );
  572. } //*** IClusCfgSetCredentials
  573. //****************************************************************************
  574. //++
  575. //
  576. // interface IClusCfgVerify
  577. //
  578. // Description:
  579. // This interface is used to verify the connection to the server.
  580. //
  581. //--
  582. //****************************************************************************
  583. [
  584. object,
  585. uuid( D47BBEEC-2286-4514-AA90-7E88BD0FE543 ),
  586. pointer_default( unique )
  587. ]
  588. interface IClusCfgVerify : IUnknown
  589. {
  590. //////////////////////////////////////////////////////////////////////////
  591. //
  592. // STDMETHOD
  593. // VerifyCredentials(
  594. // [ in ] LPCWSTR pcszUserIn,
  595. // [ in ] LPCWSTR pcszDomainIn,
  596. // [ in ] LPCWSTR pcszPasswordIn
  597. // )
  598. //
  599. // Description:
  600. // Validate the credentials.
  601. //
  602. // Parameters:
  603. // pcszUserIn
  604. // The user name.
  605. //
  606. // pcszDomainIn
  607. // The domain name.
  608. //
  609. // pcszPasswordIn
  610. // The user's password.
  611. //
  612. // Return Values:
  613. // S_OK
  614. // The credentials are valid.
  615. //
  616. // other HRESULTs
  617. // The call failed.
  618. //
  619. //////////////////////////////////////////////////////////////////////////
  620. HRESULT
  621. VerifyCredentials(
  622. [ in, pointer_default( unique ) ] LPCWSTR pcszUserIn,
  623. [ in, pointer_default( unique ) ] LPCWSTR pcszDomainIn,
  624. [ in, pointer_default( unique ) ] LPCWSTR pcszPasswordIn
  625. );
  626. ///////////////////////////////////////////////////////////////////////////
  627. //
  628. // HRESULT
  629. // VerifyConnectionToCluster(
  630. // LPCWSTR pcszClusterNameIn
  631. // )
  632. //
  633. // Description:
  634. // The client passes the connection name to the created server object.
  635. // The server object will then verify that the client connected to
  636. // the CLUSTER is was supposed to. We have to do this because the
  637. // currently network situation can lead to unpredictable connections.
  638. //
  639. // Arguments:
  640. // pcszClusterNameIn
  641. // This is the FDQN for the cluster we are looking for.
  642. //
  643. // Return Values:
  644. // S_OK
  645. // The call succeeded and the client did connect to the correct
  646. // node.
  647. //
  648. // S_FALSE
  649. // The call succeeded but the client connected to a different node.
  650. //
  651. // other failure HRESULTs
  652. // The call failed.
  653. //
  654. ///////////////////////////////////////////////////////////////////////////
  655. HRESULT
  656. VerifyConnectionToCluster(
  657. [ in, pointer_default( unique ) ] LPCWSTR pcszClusterNameIn
  658. );
  659. ///////////////////////////////////////////////////////////////////////////
  660. //
  661. // HRESULT
  662. // VerifyConnectionToNode(
  663. // LPCWSTR pcszNodeNameIn
  664. // )
  665. //
  666. // Description:
  667. // The client passes the connection name to the created server object.
  668. // The server object will then verify that the client connected to
  669. // the NODE is was supposed to. We have to do this because the
  670. // currently network situation can lead to unpredictable connections.
  671. //
  672. // Arguments:
  673. // pcszNodeNameIn
  674. // This is the FDQN for the node we are looking for.
  675. //
  676. // Return Values:
  677. // S_OK
  678. // The call succeeded and the client did connect to the correct
  679. // node.
  680. //
  681. // S_FALSE
  682. // The call succeeded but the client connected to a different node.
  683. //
  684. // other failure HRESULTs
  685. // The call failed.
  686. //
  687. ///////////////////////////////////////////////////////////////////////////
  688. HRESULT
  689. VerifyConnectionToNode(
  690. [ in, pointer_default( unique ) ] LPCWSTR pcszNodeNameIn
  691. );
  692. } //*** IClusCfgVerify
  693. //****************************************************************************
  694. //++
  695. //
  696. // interface IClusCfgClusterConnection
  697. //
  698. // Description:
  699. // This interface is used for managing cluster connections.
  700. //
  701. //--
  702. //****************************************************************************
  703. [
  704. object,
  705. uuid( CE6EF90C-3602-41e7-95BD-AAFD37A676DF ),
  706. pointer_default( unique )
  707. ]
  708. interface IClusCfgClusterConnection : IUnknown
  709. {
  710. ///////////////////////////////////////////////////////////////////////////
  711. //
  712. // HRESULT
  713. // OpenConnection(
  714. // LPCWSTR pcszClusterNameIn
  715. // )
  716. //
  717. // Description:
  718. //
  719. // Arguments:
  720. // pcszClusterNameIn
  721. // This is the FDQN for the server we are looking for. This can
  722. // be a node or cluster name.
  723. //
  724. // Return Values:
  725. // S_OK
  726. // The call succeeded.
  727. //
  728. // other failure HRESULTs
  729. // The call failed.
  730. //
  731. ///////////////////////////////////////////////////////////////////////////
  732. HRESULT
  733. OpenConnection(
  734. [ in, pointer_default( unique ) ] LPCWSTR pcszClusterNameIn
  735. );
  736. } //*** IClusCfgClusterConnection
  737. //****************************************************************************
  738. //++
  739. //
  740. // interface IClusCfgBaseCluster
  741. //
  742. // Description:
  743. // The IClusCfgBaseCluster interface provides the functions
  744. // required to form a minimal cluster on a computer, join an existing
  745. // cluster, upgrade a node or cleanup a node.
  746. //
  747. //--
  748. //****************************************************************************
  749. [
  750. object,
  751. uuid( A8A5C613-2518-47f5-96CA-CAFA7FFBAF68 ),
  752. async_uuid( A8A5C614-2518-47f5-96CA-CAFA7FFBAF68 ),
  753. pointer_default( unique )
  754. ]
  755. interface IClusCfgBaseCluster : IUnknown
  756. {
  757. //////////////////////////////////////////////////////////////////////////
  758. //
  759. // STDMETHOD
  760. // SetCreate(
  761. // [ in, string ] const WCHAR * pcszClusterNameIn
  762. // , [ in, string ] const WCHAR * pcszClusterBindingStringIn
  763. // , [ in ] IClusCfgCredentials * pcccServiceAccountIn
  764. // , [ in, string ] const WCHAR * pcszClusterAccountPwdIn
  765. // , [ in, string ] const WCHAR * pcszClusterAccountDomainIn
  766. // , [ in ] const DWORD dwClusterIPAddressIn
  767. // , [ in ] const DWORD dwClusterIPSubnetMaskIn
  768. // , [ in, string ] const WCHAR * pcszClusterIPNetworkIn
  769. // )
  770. //
  771. // Description:
  772. // Indicate that a cluster is to be created on this computer. This
  773. // cluster has only three core resources, the network name resource,
  774. // the IP address resource and the Local Quorum resource.
  775. //
  776. // Parameters:
  777. // pcszClusterNameIn
  778. // Name of the cluster to be formed.
  779. //
  780. // pcszClusterBindingStringIn
  781. // pcccServiceAccountIn
  782. // Information about the account to be used as the cluster service
  783. // account.
  784. //
  785. // dwClusterIPAddressIn
  786. // dwClusterIPSubnetMaskIn
  787. // pcszClusterIPNetworkIn
  788. // Information about the cluster IP address.
  789. //
  790. // Return Values:
  791. // S_OK
  792. // The call succeeded.
  793. //
  794. // other HRESULTs
  795. // The call failed.
  796. //
  797. //////////////////////////////////////////////////////////////////////////
  798. HRESULT
  799. SetCreate(
  800. [ in, string ] const WCHAR * pcszClusterNameIn
  801. , [ in, string ] const WCHAR * pcszClusterBindingStringIn
  802. , [ in ] IClusCfgCredentials * pcccServiceAccountIn
  803. , [ in ] const DWORD dwClusterIPAddressIn
  804. , [ in ] const DWORD dwClusterIPSubnetMaskIn
  805. , [ in, string ] const WCHAR * pcszClusterIPNetworkIn
  806. );
  807. //////////////////////////////////////////////////////////////////////////
  808. //
  809. // STDMETHOD
  810. // SetAdd(
  811. // [ in, string ] const WCHAR * pcszClusterNameIn
  812. // , [ in, string ] const WCHAR * pcszClusterBindingStringIn
  813. // , [ in ] IClusCfgCredentials * pcccServiceAccountIn
  814. // )
  815. //
  816. // Description:
  817. // Indicate that this computer is to be added to a cluster.
  818. //
  819. // Parameters:
  820. // pcszClusterNameIn
  821. // Name of the cluster to join.
  822. //
  823. // pcszClusterBindingStringIn
  824. // pcccServiceAccountIn
  825. // Information about the account to be used as the cluster service
  826. // account.
  827. //
  828. // Return Values:
  829. // S_OK
  830. // The call succeeded.
  831. //
  832. // other HRESULTs
  833. // The call failed.
  834. //
  835. //////////////////////////////////////////////////////////////////////////
  836. HRESULT
  837. SetAdd(
  838. [ in, string ] const WCHAR * pcszClusterNameIn
  839. , [ in, string ] const WCHAR * pcszClusterBindingStringIn
  840. , [ in ] IClusCfgCredentials * pcccServiceAccountIn
  841. );
  842. //////////////////////////////////////////////////////////////////////////
  843. //
  844. // STDMETHOD
  845. // SetCleanup( void )
  846. //
  847. // Description:
  848. // Indicate that this node needs to be cleaned up. This method is
  849. // called after the node has been evicted from a cluster to clean up
  850. // the state left over from its erstwhile cluster membership. This
  851. // method has to be called before the node can be a part of a cluster
  852. // again. Note, the ClusSvc service should not be running when this
  853. // action is committed.
  854. //
  855. // Parameters:
  856. // None.
  857. //
  858. // Return Values:
  859. // S_OK
  860. // The call succeeded.
  861. //
  862. // other HRESULTs
  863. // The call failed.
  864. //
  865. //////////////////////////////////////////////////////////////////////////
  866. HRESULT
  867. SetCleanup( void );
  868. //
  869. // MUSTDO: 04-APR-2000 VVasu
  870. //
  871. // Declare the SetUpgrade method here.
  872. //
  873. //////////////////////////////////////////////////////////////////////////
  874. //
  875. // STDMETHOD
  876. // Commit( void )
  877. //
  878. // Description:
  879. // This function actually performs the action indicated by a previous
  880. // Setxxx call.
  881. //
  882. // Parameters:
  883. // None.
  884. //
  885. // Return Values:
  886. // S_OK
  887. // The call succeeded.
  888. //
  889. // E_FAIL
  890. // If this commit has already been performed.
  891. //
  892. // E_INVALIDARG
  893. // If no action has been set using a SetXXX call.
  894. //
  895. // other HRESULTs
  896. // The call failed.
  897. //
  898. //////////////////////////////////////////////////////////////////////////
  899. HRESULT
  900. Commit( void );
  901. //////////////////////////////////////////////////////////////////////////
  902. //
  903. // STDMETHOD
  904. // Rollback( void )
  905. //
  906. // Description:
  907. // This function rolls back the action performed by a commit call.
  908. //
  909. // Parameters:
  910. // None.
  911. //
  912. // Return Values:
  913. // S_OK
  914. // The call succeeded.
  915. //
  916. // other HRESULTs
  917. // The call failed.
  918. //
  919. //////////////////////////////////////////////////////////////////////////
  920. HRESULT
  921. Rollback( void );
  922. }; //*** interface IClusCfgBaseCluster
  923. //****************************************************************************
  924. //++
  925. //
  926. // interface IClusCfgClusterInfoEx
  927. //
  928. // Description:
  929. // Additional information about a cluster not provided by IClusCfgClusterInfo.
  930. //
  931. //--
  932. //****************************************************************************
  933. [
  934. object,
  935. uuid( 30C3CFDC-CE08-4011-B2B4-861387EB5111 ),
  936. async_uuid( B6FFFF9D-4C21-4397-A71D-C42AED2C7C39 ),
  937. pointer_default( unique )
  938. ]
  939. interface IClusCfgClusterInfoEx: IUnknown
  940. {
  941. //////////////////////////////////////////////////////////////////////////
  942. //
  943. // STDMETHOD
  944. // CheckJoiningNodeVersion(
  945. // [ in ] DWORD dwNodeHighestVersionIn
  946. // , [ in ] DWORD dwNodeLowestVersionIn
  947. // )
  948. //
  949. // Description:
  950. // Check a joining node's version information against that of nodes
  951. // already in the cluster, and provide the version required by the cluster.
  952. //
  953. // Parameters:
  954. // dwNodeHighestVersionIn
  955. // dwNodeLowestVersionIn
  956. // The node's version information, obtained from
  957. // IClusCfgNodeInfo::GetClusterVersion.
  958. //
  959. // Return Values:
  960. // S_OK -- The node is compatible with the cluster.
  961. //
  962. // HRESULT_FROM_WIN32( ERROR_CLUSTER_INCOMPATIBLE_VERSIONS )
  963. // The node is not compatible with the cluster.
  964. //
  965. // Other failures are possible.
  966. //
  967. //////////////////////////////////////////////////////////////////////////
  968. HRESULT
  969. CheckJoiningNodeVersion(
  970. [ in ] DWORD dwNodeHighestVersionIn
  971. , [ in ] DWORD dwNodeLowestVersionIn
  972. );
  973. //////////////////////////////////////////////////////////////////////////
  974. //
  975. // STDMETHOD
  976. // GetNodeNames(
  977. // [ out, ref ] long * pnCountOut
  978. // , [ out, size_is( , *pnCountOut ) ] BSTR ** prgbstrNodeNamesOut
  979. // )
  980. //
  981. // Description:
  982. // Get the names of the nodes already in a cluster.
  983. //
  984. // Parameters:
  985. // pnCountOut
  986. // On success, *pnCountOut returns the number of nodes in the cluster.
  987. //
  988. // prgbstrNodeNamesOut
  989. // On success, an array of BSTRs containing the node names.
  990. // The caller must free each BSTR with SysFreeString, and free
  991. // the array with CoTaskMemFree.
  992. //
  993. // Return Values:
  994. // S_OK
  995. // The out parameters contain valid information and the caller
  996. // must free the array and the BSTRs it contains.
  997. //
  998. // E_OUTOFMEMORY, and other failures are possible.
  999. //
  1000. //////////////////////////////////////////////////////////////////////////
  1001. HRESULT
  1002. GetNodeNames(
  1003. [ out, ref ] long * pnCountOut
  1004. , [ out, size_is( , *pnCountOut ) ] BSTR ** prgbstrNodeNamesOut
  1005. );
  1006. }; //*** interface IClusCfgClusterInfoEx