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.

721 lines
22 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ClusCfgPostCfg.idl
  7. //
  8. // Description:
  9. // This file describes the interfaces used during post configuration of
  10. // resources / applications after the initial local quorum cluster has
  11. // been configured.
  12. //
  13. // Maintained By:
  14. // Geoff Pease (GPease) 06-JUN-2000
  15. //
  16. //////////////////////////////////////////////////////////////////////////////
  17. // Comments for generated files
  18. cpp_quote( "//////////////////////////////////////////////////////////////////////////////" )
  19. cpp_quote( "//" )
  20. cpp_quote( "// Copyright (c) 2000 Microsoft Corporation" )
  21. cpp_quote( "//" )
  22. cpp_quote( "// Remarks:" )
  23. cpp_quote( "// Generated file. See file ClusCfgPostCfg.idl for more details." )
  24. cpp_quote( "//" )
  25. cpp_quote( "//////////////////////////////////////////////////////////////////////////////" )
  26. //////////////////////////////////////////////////////////////////////////////
  27. // Imported Files
  28. //////////////////////////////////////////////////////////////////////////////
  29. import "unknwn.idl";
  30. //////////////////////////////////////////////////////////////////////////////
  31. // Forward Declarations
  32. //////////////////////////////////////////////////////////////////////////////
  33. interface IClusCfgManagedResourceCfg;
  34. interface IClusCfgResourcePreCreate;
  35. interface IClusCfgResourceCreate;
  36. interface IClusCfgResourcePostCreate;
  37. interface IClusCfgResourceEvict;
  38. interface IClusCfgGroupCfg;
  39. //////////////////////////////////////////////////////////////////////////////
  40. // Type Definitions
  41. //////////////////////////////////////////////////////////////////////////////
  42. //////////////////////////////////////////////////////////////////////////////
  43. // Interface Definitions
  44. //////////////////////////////////////////////////////////////////////////////
  45. //****************************************************************************
  46. //++
  47. //
  48. // interface IClusCfgManagedResourceCfg
  49. //
  50. // Description:
  51. // TODO: gpease 06-JUN-2000
  52. // Write a description.
  53. //
  54. //--
  55. //****************************************************************************
  56. [
  57. object,
  58. uuid( 60300A0F-77E1-440c-BD94-6BFB0DBFDB3A ),
  59. local,
  60. pointer_default( unique )
  61. ]
  62. interface IClusCfgManagedResourceCfg : IUnknown
  63. {
  64. //////////////////////////////////////////////////////////////////////////
  65. //
  66. // STDMETHOD
  67. // IClusCfgManagedResourceCfg::PreCreate(
  68. // IUnknown * punkServicesIn
  69. // )
  70. //
  71. // Description:
  72. // This method is called by the post configuration manager to
  73. // determine the requirements of the resource. Querying the
  74. // punkServicesIn allows the managed resource to use services
  75. // provided by the manager.
  76. //
  77. // Arguments:
  78. // punkServicesIn
  79. // The resource should QI this interface for services provided
  80. // by the post configuration manager and to set its dependencies.
  81. //
  82. // Return Values:
  83. // S_OK
  84. // Success.
  85. //
  86. // other HRESULTs.
  87. // The call failed.
  88. //
  89. //////////////////////////////////////////////////////////////////////////
  90. HRESULT PreCreate( IUnknown * punkServicesIn );
  91. //////////////////////////////////////////////////////////////////////////
  92. //
  93. // STDMETHOD
  94. // IClusCfgManagedResourceCfg::Create(
  95. // IUnknown * punkServicesIn
  96. // )
  97. //
  98. // Description:
  99. // This method is called by the post configuration manager to
  100. // have the resource create an instance of itself. Querying the
  101. // punkServicesIn allows the managed resource to use services
  102. // provided by the manager.
  103. //
  104. // Arguments:
  105. // punkServicesIn
  106. // The resource should QI this interface for services provided
  107. // by the post configuration manager and to create itself.
  108. //
  109. // Return Values:
  110. // S_OK
  111. // Success.
  112. //
  113. // other HRESULTs.
  114. // The call failed.
  115. //
  116. //////////////////////////////////////////////////////////////////////////
  117. HRESULT Create( IUnknown * punkServicesIn );
  118. //////////////////////////////////////////////////////////////////////////
  119. //
  120. // STDMETHOD
  121. // IClusCfgManagedResourceCfg::PostCreate(
  122. // IUnknown * punkServicesIn
  123. // )
  124. //
  125. // Description:
  126. // This method is called by the post configuration manager to allow
  127. // resources to perform any post-creation configuration that may be
  128. // needed. At this point the cluster is fully configured. Querying
  129. // the punkServicesIn allows the managed resource to use services
  130. // provided by the manager.
  131. //
  132. // Arguments:
  133. // punkServicesIn
  134. // The resource should QI this interface for services provided
  135. // by the post configuration manager.
  136. //
  137. // Return Values:
  138. // S_OK
  139. // Success.
  140. //
  141. // other HRESULTs.
  142. // The call failed.
  143. //
  144. //////////////////////////////////////////////////////////////////////////
  145. HRESULT PostCreate( IUnknown * punkServicesIn );
  146. //////////////////////////////////////////////////////////////////////////
  147. //
  148. // STDMETHOD
  149. // IClusCfgManagedResourceCfg::Evict(
  150. // IUnknown * punkServicesIn
  151. // )
  152. //
  153. // Description:
  154. // This method is called by the post configuration manager to alert
  155. // the resource that this node was evicted from the cluster. The
  156. // resource should do whatever cleanup it needs to do revert to a
  157. // non-clustered state. Querying the punkServicesIn allows the
  158. // managed resource to uses services provided by the post
  159. // configuration manager.
  160. //
  161. // Arguments:
  162. // punkServicesIn
  163. // The resource should QI this interface for services provided
  164. // by the post configuration manager.
  165. //
  166. // Return Values:
  167. // S_OK
  168. // Success.
  169. //
  170. // other HRESULTs.
  171. // The call failed. Errors are ignored and do not prevent a node
  172. // from being evicted.
  173. //
  174. //////////////////////////////////////////////////////////////////////////
  175. HRESULT Evict( IUnknown * punkServicesIn );
  176. }; //*** interface IClusCfgManagedResourceCfg
  177. //****************************************************************************
  178. //++
  179. //
  180. // interface IClusCfgResourcePreCreate
  181. //
  182. // Description:
  183. // TODO: gpease 06-JUN-2000
  184. // Write a description.
  185. //
  186. //--
  187. //****************************************************************************
  188. [
  189. object,
  190. uuid( 4240F6A1-9D49-427e-8F3D-09384E1F59E4 ),
  191. local,
  192. pointer_default( unique )
  193. ]
  194. interface IClusCfgResourcePreCreate : IUnknown
  195. {
  196. typedef
  197. [
  198. uuid( 1DAF9692-6662-43b1-AD45-D50F7849B0CD ),
  199. helpstring("Resource dependency flags")
  200. ]
  201. enum EDependencyFlags {
  202. [helpstring("Unknown access")] dfUNKNOWN = 0,
  203. [helpstring("Shared access resource")] dfSHARED = 1,
  204. [helpstring("Exclusive access resource")] dfEXCLUSIVE = 2,
  205. } EDependencyFlags;
  206. //////////////////////////////////////////////////////////////////////////
  207. //
  208. // STDMETHOD
  209. // IClusCfgResourcePreCreate::SetDependency(
  210. // LPCLSID pclsidDepResTypeIn,
  211. // EDependencyFlags dflagIn
  212. // )
  213. //
  214. // Description:
  215. // Informs the post configuration manager that a resource has a
  216. // dependency on another type of resource and if the resource needs
  217. // the resource for shared access or exclusive access.
  218. //
  219. // Arguments:
  220. // pclsidDepResTypeIn
  221. // The CLSID of the type of resource that a resource is
  222. // requesting a dependency on. These are documented in the SDK
  223. // or by the 3rd party resource.
  224. //
  225. // dfIn
  226. // Flags to modify the dependency relationship. The following
  227. // are defined flags:
  228. //
  229. // dfSHARED - the dependent resource can be shared.
  230. // dfEXCLUSIVE - the dependent resource can not be shared.
  231. //
  232. // Return Value:
  233. // S_OK
  234. // Success.
  235. //
  236. // other HRESULTs.
  237. // The call failed.
  238. //
  239. //////////////////////////////////////////////////////////////////////////
  240. HRESULT SetDependency( LPCLSID pclsidDepResTypeIn, DWORD dfIn );
  241. //////////////////////////////////////////////////////////////////////////
  242. //
  243. // STDMETHOD
  244. // IClusCfgResourcePreCreate::GetType(
  245. // CLSID * pclsidIn
  246. // )
  247. //
  248. // Description:
  249. // A managed resource MUST call this to indicate its resource type.
  250. // Failure to call this during PreCreate will result in your
  251. // resource not being created.
  252. //
  253. // Arguments:
  254. // pclsidIn
  255. // Pointer to the GUID of the resource type.
  256. //
  257. // Return Values:
  258. // S_OK
  259. // Success.
  260. //
  261. // other HRESULTs.
  262. // The call failed.
  263. //
  264. //////////////////////////////////////////////////////////////////////////
  265. HRESULT SetType( CLSID * pclsidIn );
  266. //////////////////////////////////////////////////////////////////////////
  267. //
  268. // STDMETHOD
  269. // IClusCfgResourcePreCreate::SetClassType(
  270. // CLSID * pclsidIn
  271. // )
  272. //
  273. // Description:
  274. // A managed resource sets this to indicate that its resource type
  275. // can be considered to be of a class of resource. You may call this
  276. // multiple times to indicate all the classes you belong to.
  277. //
  278. // Arguments:
  279. // pclsidIn
  280. // Pointer to the GUID of the resource class type.
  281. //
  282. // Return Values:
  283. // S_OK
  284. // Success.
  285. //
  286. // other HRESULTs.
  287. // The call failed.
  288. //
  289. //////////////////////////////////////////////////////////////////////////
  290. HRESULT SetClassType( CLSID * pclsidIn );
  291. }; //*** interface IClusCfgResourcePreCreate
  292. //****************************************************************************
  293. //++
  294. //
  295. // interface IClusCfgResourceCreate
  296. //
  297. // Description:
  298. // TODO: gpease 06-JUN-2000
  299. // Write a description.
  300. //
  301. //--
  302. //****************************************************************************
  303. [
  304. object,
  305. uuid( 0647B41A-C777-443c-9432-02CCCF4FF443 ),
  306. local,
  307. pointer_default( unique )
  308. ]
  309. interface IClusCfgResourceCreate : IUnknown
  310. {
  311. //////////////////////////////////////////////////////////////////////////
  312. //
  313. // STDMETHOD
  314. // IClusCfgResourceCreate::SetPropertyBinary(
  315. // LPCWSTR pcszNameIn,
  316. // const DWORD cbSizeIn,
  317. // const BYTE * pbyteIn
  318. // )
  319. //
  320. // Description:
  321. //
  322. // Arguments:
  323. //
  324. // Return Value:
  325. // S_OK
  326. // Success.
  327. //
  328. // other HRESULTs.
  329. // The call failed.
  330. //
  331. //////////////////////////////////////////////////////////////////////////
  332. HRESULT SetPropertyBinary( LPCWSTR pcszNameIn, const DWORD cbSizeIn, const BYTE * pbyteIn );
  333. //////////////////////////////////////////////////////////////////////////
  334. //
  335. // STDMETHOD
  336. // IClusCfgResourceCreate::SetPropertyDWORD(
  337. // LPCWSTR pcszNameIn,
  338. // const DWORD dwDWORDIn
  339. // )
  340. //
  341. // Description:
  342. //
  343. // Arguments:
  344. //
  345. // Return Value:
  346. // S_OK
  347. // Success.
  348. //
  349. // other HRESULTs.
  350. // The call failed.
  351. //
  352. //////////////////////////////////////////////////////////////////////////
  353. HRESULT SetPropertyDWORD( LPCWSTR pcszNameIn, const DWORD dwDWORDIn );
  354. //////////////////////////////////////////////////////////////////////////
  355. //
  356. // STDMETHOD
  357. // IClusCfgResourceCreate::SetPropertyString(
  358. // LPCWSTR pcszNameIn,
  359. // LPCWSTR pcszStringIn
  360. // )
  361. //
  362. // Description:
  363. //
  364. // Arguments:
  365. //
  366. // Return Value:
  367. // S_OK
  368. // Success.
  369. //
  370. // other HRESULTs.
  371. // The call failed.
  372. //
  373. //////////////////////////////////////////////////////////////////////////
  374. HRESULT SetPropertyString( LPCWSTR pcszNameIn, LPCWSTR pcszStringIn );
  375. //////////////////////////////////////////////////////////////////////////
  376. //
  377. // STDMETHOD
  378. // IClusCfgResourceCreate::SetPropertyExpandString(
  379. // LPCWSTR pcszNameIn,
  380. // LPCWSTR pcszStringIn
  381. // )
  382. //
  383. // Description:
  384. //
  385. // Arguments:
  386. //
  387. // Return Value:
  388. // S_OK
  389. // Success.
  390. //
  391. // other HRESULTs.
  392. // The call failed.
  393. //
  394. //////////////////////////////////////////////////////////////////////////
  395. HRESULT SetPropertyExpandString( LPCWSTR pcszNameIn, LPCWSTR pcszStringIn );
  396. //////////////////////////////////////////////////////////////////////////
  397. //
  398. // STDMETHOD
  399. // IClusCfgResourceCreate::SetPropertyMultiString(
  400. // LPCWSTR pcszNameIn,
  401. // const DWORD cbMultiStringIn,
  402. // LPCWSTR pcszMultiStringIn
  403. // )
  404. //
  405. // Description:
  406. //
  407. // Arguments:
  408. //
  409. // Return Value:
  410. // S_OK
  411. // Success.
  412. //
  413. // other HRESULTs.
  414. // The call failed.
  415. //
  416. //////////////////////////////////////////////////////////////////////////
  417. HRESULT SetPropertyMultiString( LPCWSTR pcszNameIn, const DWORD cbMultiStringIn, LPCWSTR pcszMultiStringIn );
  418. //////////////////////////////////////////////////////////////////////////
  419. //
  420. // STDMETHOD
  421. // IClusCfgResourceCreate::SetPropertyUnsignedLargeInt(
  422. // LPCWSTR pcszNameIn,
  423. // const ULARGE_INTEGER ulIntIn
  424. // )
  425. //
  426. // Description:
  427. //
  428. // Arguments:
  429. //
  430. // Return Value:
  431. // S_OK
  432. // Success.
  433. //
  434. // other HRESULTs.
  435. // The call failed.
  436. //
  437. //////////////////////////////////////////////////////////////////////////
  438. HRESULT SetPropertyUnsignedLargeInt( LPCWSTR pcszNameIn, const ULARGE_INTEGER ulIntIn );
  439. //////////////////////////////////////////////////////////////////////////
  440. //
  441. // STDMETHOD
  442. // IClusCfgResourceCreate::SetPropertyLong(
  443. // LPCWSTR pcszNameIn,
  444. // const LONG lLongIn
  445. // )
  446. //
  447. // Description:
  448. //
  449. // Arguments:
  450. //
  451. // Return Value:
  452. // S_OK
  453. // Success.
  454. //
  455. // other HRESULTs.
  456. // The call failed.
  457. //
  458. //////////////////////////////////////////////////////////////////////////
  459. HRESULT SetPropertyLong( LPCWSTR pcszNameIn, const LONG lLongIn );
  460. //////////////////////////////////////////////////////////////////////////
  461. //
  462. // STDMETHOD
  463. // IClusCfgResourceCreate::SetPropertySecurityDescriptor(
  464. // LPCWSTR pcszNameIn,
  465. // const SECURITY_DESCRIPTOR * pcsdIn
  466. // )
  467. //
  468. // Description:
  469. //
  470. // Arguments:
  471. //
  472. // Return Value:
  473. // S_OK
  474. // Success.
  475. //
  476. // other HRESULTs.
  477. // The call failed.
  478. //
  479. //////////////////////////////////////////////////////////////////////////
  480. HRESULT SetPropertySecurityDescriptor( LPCWSTR pcszNameIn, const SECURITY_DESCRIPTOR * pcsdIn );
  481. //////////////////////////////////////////////////////////////////////////
  482. //
  483. // STDMETHOD
  484. // IClusCfgResourceCreate::SetPropertyLargeInt(
  485. // LPCWSTR pcszNameIn,
  486. // const LARGE_INTEGER lIntIn
  487. // )
  488. //
  489. // Description:
  490. //
  491. // Arguments:
  492. //
  493. // Return Value:
  494. // S_OK
  495. // Success.
  496. //
  497. // other HRESULTs.
  498. // The call failed.
  499. //
  500. //////////////////////////////////////////////////////////////////////////
  501. HRESULT SetPropertyLargeInt( LPCWSTR pcszNameIn, const LARGE_INTEGER lIntIn );
  502. //////////////////////////////////////////////////////////////////////////
  503. //
  504. // STDMETHOD
  505. // IClusCfgResourceCreate::SendResourceControl(
  506. // DWORD dwControlCode,
  507. // LPVOID lpInBuffer,
  508. // DWORD cbInBufferSize,
  509. // )
  510. //
  511. // Description:
  512. //
  513. // Arguments:
  514. //
  515. // Return Value:
  516. // S_OK
  517. // Success.
  518. //
  519. // other HRESULTs.
  520. // The call failed.
  521. //
  522. //////////////////////////////////////////////////////////////////////////
  523. HRESULT SendResourceControl( DWORD dwControlCode,
  524. LPVOID lpInBuffer,
  525. DWORD cbInBufferSize
  526. );
  527. }; //*** interface IClusCfgResourceCreate
  528. //****************************************************************************
  529. //++
  530. //
  531. // interface IClusCfgResourcePostCreate
  532. //
  533. // Description:
  534. // TODO: gpease 06-JUN-2000
  535. // Write a description.
  536. //
  537. //--
  538. //****************************************************************************
  539. [
  540. object,
  541. uuid( 72A9BF54-13B6-451f-910D-6913EBF025AB ),
  542. local,
  543. pointer_default( unique )
  544. ]
  545. interface IClusCfgResourcePostCreate : IUnknown
  546. {
  547. //////////////////////////////////////////////////////////////////////////
  548. //
  549. // STDMETHOD
  550. // IClusCfgResourcePostCreate::ChangeName(
  551. // LPCWSTR pcszNameIn
  552. // )
  553. //
  554. // Description:
  555. // Changes the name of the resource.
  556. //
  557. // Arguments:
  558. // pcszNameIn
  559. // The name to assign the group.
  560. //
  561. // Return Value:
  562. // S_OK
  563. // Success.
  564. //
  565. // other HRESULTs.
  566. // The call failed.
  567. //
  568. //////////////////////////////////////////////////////////////////////////
  569. HRESULT ChangeName( LPCWSTR pcszNameIn );
  570. //////////////////////////////////////////////////////////////////////////
  571. //
  572. // STDMETHOD
  573. // IClusCfgResourceCreate::SendResourceControl(
  574. // DWORD dwControlCode,
  575. // LPVOID lpInBuffer,
  576. // DWORD cbInBufferSize,
  577. // LPVOID lpOutBuffer,
  578. // DWORD cbOutBufferSize,
  579. // LPDWORD lpcbBytesReturned
  580. // )
  581. //
  582. // Description:
  583. //
  584. // Arguments:
  585. //
  586. // Return Value:
  587. // S_OK
  588. // Success.
  589. //
  590. // other HRESULTs.
  591. // The call failed.
  592. //
  593. //////////////////////////////////////////////////////////////////////////
  594. HRESULT SendResourceControl( DWORD dwControlCode,
  595. LPVOID lpInBuffer,
  596. DWORD cbInBufferSize,
  597. LPVOID lpOutBuffer,
  598. DWORD cbOutBufferSize,
  599. LPDWORD lpcbBytesReturned
  600. );
  601. }; //*** interface IClusCfgResourcePostCreate
  602. //****************************************************************************
  603. //++
  604. //
  605. // interface IClusCfgGroupCfg
  606. //
  607. // Description:
  608. // TODO: gpease 06-JUN-2000
  609. // Write a description.
  610. //
  611. //--
  612. //****************************************************************************
  613. [
  614. object,
  615. uuid( DCB6D3D2-A55F-49e5-A64A-0CCFEB01ED3A ),
  616. local,
  617. pointer_default( unique )
  618. ]
  619. interface IClusCfgGroupCfg : IUnknown
  620. {
  621. //////////////////////////////////////////////////////////////////////////
  622. //
  623. // STDMETHOD
  624. // IClusCfgGroupCfg::SetName(
  625. // LPCWSTR pcszNameIn
  626. // )
  627. //
  628. // Description:
  629. // Changes the name of the group in which the resource was created.
  630. // Note that the last resource to set the name wins. The ordering
  631. // of the last resource is the resource that doesn't have anything
  632. // depending on it.
  633. //
  634. // Arguments:
  635. // pcszNameIn
  636. // The name to assign the group.
  637. //
  638. // Return Value:
  639. // S_OK
  640. // Success.
  641. //
  642. // other HRESULTs.
  643. // The call failed.
  644. //
  645. //////////////////////////////////////////////////////////////////////////
  646. HRESULT SetName( LPCWSTR pcszNameIn );
  647. //////////////////////////////////////////////////////////////////////////
  648. //
  649. // STDMETHOD
  650. // IClusCfgGroupCfg::GetName(
  651. // DWORD * pcbSizeInout,
  652. // LPWSTR pszNameOut
  653. // )
  654. //
  655. // Description:
  656. // Retrieves the name of the group in which the resource was created.
  657. // Note that the last resource to set the name wins. The ordering
  658. // of the last resource is the resource that doesn't have anything
  659. // depending on it. Do not cache this value as the name may change
  660. // after control has been returned to the manager.
  661. //
  662. // Arguments:
  663. // pcbSizeInout
  664. // Size of the pszNameOut buffer. On return, it is the size
  665. // of the sting in bytes (not WCHARs). If the buffer is too
  666. // small, the required buffer size will be returned.
  667. //
  668. // bstrNameIn
  669. // The name to assign the group.
  670. //
  671. // Return Value:
  672. // S_OK
  673. // Success.
  674. //
  675. // HRESULT_FROM_WIN32( ERROR_MORE_DATA )
  676. // The buffer size specified is too small.
  677. //
  678. // other HRESULTs.
  679. // The call failed.
  680. //
  681. //////////////////////////////////////////////////////////////////////////
  682. HRESULT GetName( DWORD * pcbSizeInout, LPWSTR pszNameOut );
  683. }; //*** interface IClusCfgGroupCfg