// msclus.idl : IDL source for msclus.dll // ~~~~~~~~~~ // // History // ?? Mar 1997 - Original creation. // 12 May 1997 - Changed the collections to use Add/Remove/Create/Delete // 14 May 1997 - Changed interface names per code review // // // This file will be processed by the MIDL tool to // produce the type library (msclus.tlb) and marshalling code. // UUIDS for MSCLUS // e9d74360-e986-11d0-a1cf-00a024ab73e5 -- interface IClusterApplication; // e9d74361-e986-11d0-a1cf-00a024ab73e5 -- interface Clusters // e9d74362-e986-11d0-a1cf-00a024ab73e5 -- interface ICluster // e9d74363-e986-11d0-a1cf-00a024ab73e5 -- interface ClusNode // e9d74364-e986-11d0-a1cf-00a024ab73e5 -- interface ClusNodes // e9d74365-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResGroup // e9d74366-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResGroups // e9d74367-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResource // e9d74368-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResources // e9d74369-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResType // e9d7436a-e986-11d0-a1cf-00a024ab73e5 -- interface ClusResTypes // e9d7436b-e986-11d0-a1cf-00a024ab73e5 -- interface ClusProperty // e9d7436c-e986-11d0-a1cf-00a024ab73e5 -- interface ClusProperties // e9d7436d-e986-11d0-a1cf-00a024ab73e5 -- interface IClusterDomain // e9d7436e-e986-11d0-a1cf-00a024ab73e5 -- interface Domains // e9d7436f-e986-11d0-a1cf-00a024ab73e5 // e9d74370-e986-11d0-a1cf-00a024ab73e5 -- library MSClusterLib // e9d74371-e986-11d0-a1cf-00a024ab73e5 -- coclass Application // e9d74372-e986-11d0-a1cf-00a024ab73e5 -- coclass Cluster // e9d74373-e986-11d0-a1cf-00a024ab73e5 -- coclass ClusterDomain // e9d74374-e986-11d0-a1cf-00a024ab73e5 // e9d74375-e986-11d0-a1cf-00a024ab73e5 // e9d74376-e986-11d0-a1cf-00a024ab73e5 // e9d74377-e986-11d0-a1cf-00a024ab73e5 // e9d74378-e986-11d0-a1cf-00a024ab73e5 // e9d74379-e986-11d0-a1cf-00a024ab73e5 // e9d7437a-e986-11d0-a1cf-00a024ab73e5 // e9d7437b-e986-11d0-a1cf-00a024ab73e5 // e9d7437c-e986-11d0-a1cf-00a024ab73e5 // e9d7437d-e986-11d0-a1cf-00a024ab73e5 // e9d7437e-e986-11d0-a1cf-00a024ab73e5 // e9d7437f-e986-11d0-a1cf-00a024ab73e5 import "oaidl.idl"; cpp_quote("#ifndef _CLUSTER_API_TYPES_") #include "clusapi.h" cpp_quote("#define _CLUSTER_API_TYPES_") cpp_quote("#endif // _CLUSTER_API_TYPES_") /////////////////////////////////////// // definitions interface IClusterApplication; interface IClusterDomain; interface ICluster; interface Domains; interface Clusters; //old interface ClusterNode; interface ClusNode; //old interface ClusterNodes; interface ClusNodes; //old interface ResourceGroup; interface ClusResGroup; //old interface ResourceGroups; interface ClusResGroups; //old interface Resource; interface ClusResource; //old interface Resources; interface ClusResources; //old interface ResourceType; interface ClusResType; //old interface ResourceTypes; interface ClusResTypes; //old interface ClusterProperty; interface ClusProperty; //old interface ClusterProperties; interface ClusProperties; // /////////////////////////////////////// ///////////////////////////////////////////////// // Application [ object, uuid(e9d74360-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Application Interface"), hidden, pointer_default(unique) ] interface IClusterApplication : IDispatch { [propget] HRESULT Domains( [out, retval] Domains ** ppDomains ); HRESULT OpenCluster( [in] BSTR bstrClusterName, [out, retval] ICluster ** pCluster ); }; ///////////////////////////////////////////////// // Domains [ object, uuid(e9d7436e-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Domains collection"), pointer_default(unique) ] interface Domains : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE)] HRESULT Item( [in] VARIANT varIndex, [out, retval] IClusterDomain ** ppClusterDomain ); HRESULT AddItem( [in] IClusterDomain * pClusterDomain ); }; ///////////////////////////////////////////////// // ClusterDomain [ object, uuid(e9d7436d-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("ClusterDomain Interface"), hidden, pointer_default(unique) ] interface IClusterDomain : IDispatch { ///////////////////////////////// // ClusterDomain [propget] HRESULT DomainName( [out, retval] BSTR * pbstrDomainName ); [propget] HRESULT Clusters( [out, retval] Clusters ** ppClusters ); }; ///////////////////////////////////////////////// // Clusters [ object, uuid(e9d74361-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Clusters collection"), pointer_default(unique) ] interface Clusters : IDispatch { [propget] HRESULT DomainName( [out, retval] BSTR * pbstrDomainName ); [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE), helpstring("Index by integer")] HRESULT Item( [in] LONG nIndex, [out, retval] BSTR * bstrClusterName ); }; ///////////////////////////////////////////////// // Cluster [ object, uuid(e9d74362-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Interface"), hidden, pointer_default(unique) ] interface ICluster : IDispatch { ///////////////////////////////// // Cluster [propget, hidden] HRESULT Handle( [out, retval] LONG * phandle ); HRESULT Open( [in] BSTR bstrClusterName ); HRESULT Close(); [propput] HRESULT Name( [in] BSTR bstrClusterName ); [propget] HRESULT Name( [out, retval] BSTR * pbstrClusterName ); HRESULT GetVersion( [out] BSTR * pbstrClusterName, [out] SHORT * MajorVersion, [out] SHORT * MinorVersion, [out] SHORT * BuildNumber, [out] BSTR * pbstrVendorId, [out] BSTR * pbstrCSDVersion ); ///////////////////////////////// // Quorum Resource [propput] HRESULT QuorumResource( [in] ClusResource * pClusterResource ); [propget] HRESULT QuorumResource( [out, retval] ClusResource ** pClusterResource ); ///////////////////////////////// // Cluster Nodes [propget] HRESULT Nodes( [out, retval] ClusNodes ** ppClusterNodes ); ///////////////////////////////// // Cluster Resource Groups [propget] HRESULT ResourceGroups( [out, retval] ClusResGroups ** ppClusterResourceGroups ); ///////////////////////////////// // Cluster Resources [propget] HRESULT Resources( [out, retval] ClusResources ** ppClusterResources ); ///////////////////////////////// // Cluster Resource Types [propget] HRESULT ResourceTypes( [out, retval] ClusResTypes ** ppResourceTypes ); }; ///////////////////////////////////////////////// // ClusNode [ object, uuid(e9d74363-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Node Interface"), pointer_default(unique) ] interface ClusNode : IDispatch { [propget, hidden] HRESULT Handle( [out, retval] LONG * phandle ); [propget] HRESULT Name( [out, retval] BSTR * pbstrNodeName ); [propget] HRESULT NodeID( [out, retval] BSTR * pbstrNodeID ); [propget] HRESULT State( [out,retval] LONG * dwState ); HRESULT Pause(); HRESULT Resume(); HRESULT Evict(); [propget] HRESULT ResourceGroups( [out, retval] ClusResGroups ** ppResourceGroups ); [propget] HRESULT CommonProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT CommonROProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateROProperties( [out, retval] ClusProperties ** ppProperties ); }; ///////////////////////////////////////////////// // ClusNodes [ object, uuid(e9d74364-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Nodes Interface"), pointer_default(unique) ] interface ClusNodes : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE), helpstring("Index by name or integer")] HRESULT Item( [in] VARIANT varIndex, [out, retval] ClusNode ** ppClusterNode ); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum( [out, retval] IUnknown ** ppEnum ); }; ///////////////////////////////////////////////// // ClusResGroup [ object, uuid(e9d74365-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resource Group Interface"), pointer_default(unique) ] interface ClusResGroup : IDispatch { [propget, hidden] HRESULT Handle( [out, retval] LONG * phandle ); [propput] HRESULT Name( [in] BSTR bstrGroupName ); [propget] HRESULT Name( [out, retval] BSTR * pbstrGroupName ); [propget] HRESULT State( [out,retval] LONG * dwState ); [propget] HRESULT OwnerNode( [out,retval] ClusNode ** ppOwnerNode ); [propget] HRESULT Resources( [out, retval] ClusResources ** ppClusterResources ); [propget] HRESULT PreferredOwnerNodes( [out, retval] ClusNodes ** ppOwnerNodes ); HRESULT Delete(); HRESULT Online( [in, optional] ClusNode * pDestinationNode ); HRESULT Move( [in, optional] ClusNode * pDestinationNode ); HRESULT Offline(); [propget] HRESULT CommonProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT CommonROProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateROProperties( [out, retval] ClusProperties ** ppProperties ); }; ///////////////////////////////////////////////// // ClusResGroups [ object, uuid(e9d74366-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resource Groups Interface"), pointer_default(unique) ] interface ClusResGroups : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE)] HRESULT Item( [in] VARIANT varIndex, [out, retval] ClusResGroup ** ppResourceGroup ); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum( [out, retval] IUnknown ** ppEnum ); [helpstring("Create a new resource group")] HRESULT CreateItem( [in] BSTR bstrResourceGroupName, [out, retval] ClusResGroup ** ppResourceGroup ); [helpstring("Delete a resource group")] HRESULT DeleteItem( [in] VARIANT varIndex ); [helpstring("Add a resource group to the list.")] HRESULT AddItem( [in] ClusResGroup* pResourceGroup ); [helpstring("Remove a resource group from the list by name or index.")] HRESULT RemoveItem( [in] VARIANT varIndex ); [helpstring("Refresh data in collection")] HRESULT Refresh(); }; ///////////////////////////////////////////////// // ClusResource [ object, uuid(e9d74367-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resource Interface"), pointer_default(unique) ] interface ClusResource : IDispatch { [propget, hidden] HRESULT Handle( [out, retval] LONG * phandle ); [propput] HRESULT Name( [in] BSTR bstrResourceName ); [propget] HRESULT Name( [out, retval] BSTR * pbstrResourceName ); [propget] HRESULT State( [out,retval] LONG * dwState ); HRESULT BecomeQuorumResource( [in] BSTR bstrDevicePath, [in] long lMaxLogSize ); HRESULT Delete(); HRESULT Fail(); HRESULT Online(); HRESULT Offline(); HRESULT ChangeResourceGroup( [in] ClusResGroup * pResourceGroup ); HRESULT AddResourceNode( [in] ClusNode * pNode ); HRESULT RemoveResourceNode( [in] ClusNode * pNode ); HRESULT AddResourceDependency( [in] ClusResource * pResource ); HRESULT RemoveResourceDependency( [in] ClusResource * pResource ); HRESULT CanResourceBeDependent( [in] ClusResource * pResource, [out, retval] BOOL * bDependent ); [propget] HRESULT AllowedNodes( [out, retval] ClusNodes ** ppNodes ); [propget] HRESULT Dependencies( [out, retval] ClusResources ** ppResources ); [propget] HRESULT CommonProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT CommonROProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateROProperties( [out, retval] ClusProperties ** ppProperties ); }; ///////////////////////////////////////////////// // ClusResources [ object, uuid(e9d74368-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resources Interface"), pointer_default(unique) ] interface ClusResources : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE)] HRESULT Item( [in] VARIANT varIndex, [out, retval] ClusResource ** ppClusterResource ); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum( [out, retval] IUnknown ** ppEnum ); [helpstring("Create a new resource.")] HRESULT CreateItem( [in] BSTR bstrResourceName, [in] BSTR bstrResourceType, [in] long dwFlags, [out, retval] ClusResource ** ppClusterResource ); [helpstring("Delete a resource by name or index.")] HRESULT DeleteItem( [in] VARIANT varIndex ); [helpstring("Add a resource to the list.")] HRESULT AddItem( [in] ClusResource* pResource ); [helpstring("Remove a resource from the list by name or index.")] HRESULT RemoveItem( [in] VARIANT varIndex ); [helpstring("Refresh data in collection")] HRESULT Refresh(); }; ///////////////////////////////////////////////// // ClusResType [ object, uuid(e9d74369-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resource Type"), pointer_default(unique) ] interface ClusResType : IDispatch { [propget] HRESULT Name( [out, retval] BSTR * strTypeName ); HRESULT Delete(); [propget] HRESULT CommonProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT CommonROProperties( [out, retval] ClusProperties ** ppProperties ); [propget] HRESULT PrivateROProperties( [out, retval] ClusProperties ** ppProperties ); }; ///////////////////////////////////////////////// // ClusResTypes [ object, uuid(e9d7436a-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Cluster Resource Types"), pointer_default(unique) ] interface ClusResTypes : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE)] HRESULT Item( [in] VARIANT varIndex, [out, retval] ClusResType ** ppResourceType ); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum( [out, retval] IUnknown ** ppEnum ); [helpstring("Create a resource type")] HRESULT CreateItem( [in] BSTR bstrResourceTypeName, [in] BSTR bstrDisplayName, [in] BSTR bstrResourceTypeDll, [in] LONG dwLooksAlivePollInterval, [in] LONG dwIsAlivePollInterval, [out, retval] ClusResType ** ppResourceType ); [helpstring("Delete a resource type")] HRESULT DeleteItem( [in] VARIANT varIndex ); [helpstring("Add a resource type to the list.")] HRESULT AddItem( [in] ClusResType * pResourceType ); [helpstring("Remove a resource type from the list by name or index.")] HRESULT RemoveItem( [in] VARIANT varIndex ); [helpstring("Refresh data in collection")] HRESULT Refresh(); }; ///////////////////////////////////////////////// // ClusProperty [ object, uuid(e9d7436b-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("Property of an object in the cluster"), pointer_default(unique) ] interface ClusProperty : IDispatch { [propget] HRESULT Name( [out, retval] BSTR * pbstrName ); [propget] HRESULT Value( [out, retval] VARIANT * pvarValue ); [propput, id(DISPID_VALUE)] HRESULT Value( [in] VARIANT varValue ); }; ///////////////////////////////////////////////// // ClusProperties [ object, uuid(e9d7436c-e986-11d0-a1cf-00a024ab73e5), dual, helpstring("ClusProperty collection"), pointer_default(unique) ] interface ClusProperties : IDispatch { [propget] HRESULT Count( [out, retval] long * pnCount ); [propget, id(DISPID_VALUE)] HRESULT Item( [in] VARIANT varIndex, [out, retval] ClusProperty ** ppProperty ); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum( [out, retval] IUnknown ** ppEnum ); [helpstring("Add an object")] HRESULT Add( [in] BSTR bstrName, [in] VARIANT varValue, [out, retval] ClusProperty ** pProperty ); [helpstring("Remove an object")] HRESULT Remove( [in] VARIANT varIndex ); [helpstring("Refresh data in collection")] HRESULT Refresh(); [helpstring("Save all property changes")] HRESULT SaveChanges(); }; ///////////////////////////////////////////////////////// // MSClusterLib [ uuid(e9d74370-e986-11d0-a1cf-00a024ab73e5), version(1.0), helpstring("MS Cluster 1.0 Type Library") ] library MSClusterLib { importlib("stdole2.tlb"); // Temporary include file for CLUSAPI constants. // #include "cluconst.idl" [ uuid(e9d74371-e986-11d0-a1cf-00a024ab73e5), helpstring("Application Class") ] coclass Application { [default] interface IClusterApplication; }; [ uuid(e9d74372-e986-11d0-a1cf-00a024ab73e5), helpstring("Cluster Class") ] coclass Cluster { [default] interface ICluster; }; [ uuid(e9d74373-e986-11d0-a1cf-00a024ab73e5), helpstring("ClusterDomain Class") ] coclass ClusterDomain { [default] interface IClusterDomain; }; };