windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/wp/inc/msclus.idl
2020-09-26 16:20:57 +08:00

695 lines
16 KiB
Plaintext

// 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;
};
};