home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
include
/
msclus.idl
< prev
next >
Wrap
Text File
|
1998-04-25
|
28KB
|
950 lines
//
// Copyright (C) Microsoft Corporation, 1997. All rights reserved.
//
// 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
// 22 July 1997 - Added new interfaces Domains and ClusterDomain.
// 20 Aug 1997 - Created new interfaces ClusNetwork and ClusNetInterface.
// - Added new base interfaces ClusObj and ClusObjCollection for all collections and
// - cluster objects respectively.
// - Added the following new collections.
// - ClusNetworks,ClusNetInterfaces,ClusResDependencies, ClusResTypeResources,
// - ClusGroupOwners and ClusResOwners.
// 27 Aug 1997 - New comments.
// - New methods to ICluster.
// This file will be processed by the MIDL tool to
// produce the type library (msclus.tlb) and marshalling code.
// f2e606ea-2631-11d1-89f1-00a0c90d061e -- interface ClusResTypes
// f2e606eb-2631-11d1-89f1-00a0c90d061e -- interface ClusProperty
// f2e606ec-2631-11d1-89f1-00a0c90d061e -- interface ClusProperties
// f2e606ed-2631-11d1-89f1-00a0c90d061e -- interface DomainNames
// f2e606ee-2631-11d1-89f1-00a0c90d061e -- interface ClusObjCollection
// f2e606ef-2631-11d1-89f1-00a0c90d061e -- interface ClusObj
// f2e606f0-2631-11d1-89f1-00a0c90d061e -- library MSClusterLib
// f2e606f1-2631-11d1-89f1-00a0c90d061e -- coclass Application
// f2e606f2-2631-11d1-89f1-00a0c90d061e -- coclass Cluster
// f2e606f3-2631-11d1-89f1-00a0c90d061e -- interface ClusNetwork
// f2e606f4-2631-11d1-89f1-00a0c90d061e -- interface ClusNetInterface
// f2e606f5-2631-11d1-89f1-00a0c90d061e -- interface ClusResDependencies
// f2e606f6-2631-11d1-89f1-00a0c90d061e -- interface ClusGroupResources
// f2e606f7-2631-11d1-89f1-00a0c90d061e -- interface ClusResTypeResources
// f2e606f8-2631-11d1-89f1-00a0c90d061e -- interface ClusGroupOwners
// f2e606f9-2631-11d1-89f1-00a0c90d061e -- interface ClusResOwners
// f2e606fa-2631-11d1-89f1-00a0c90d061e -- interface ClusNetworks
// f2e606fb-2631-11d1-89f1-00a0c90d061e -- interface ClusNetInterfaces
// f2e606fc-2631-11d1-89f1-00a0c90d061e -- interface ClusNetworkNetInterfaces
// f2e606fd-2631-11d1-89f1-00a0c90d061e -- interface ClusNodeNetInterfaces
// f2e606fe-2631-11d1-89f1-00a0c90d061e -- interface ClusRefObject
// f2e606ff-2631-11d1-89f1-00a0c90d061e
// f2e60700-2631-11d1-89f1-00a0c90d061e
// f2e60701-2631-11d1-89f1-00a0c90d061e
// f2e60702-2631-11d1-89f1-00a0c90d061e
// f2e60703-2631-11d1-89f1-00a0c90d061e
// f2e60704-2631-11d1-89f1-00a0c90d061e
// f2e60705-2631-11d1-89f1-00a0c90d061e
// f2e60706-2631-11d1-89f1-00a0c90d061e
// f2e60707-2631-11d1-89f1-00a0c90d061e
// UUIDS for MSCLUS
// f2e606e0-2631-11d1-89f1-00a0c90d061e -- interface IClusterApplication;
// f2e606e1-2631-11d1-89f1-00a0c90d061e -- interface ClusterNames
// f2e606e2-2631-11d1-89f1-00a0c90d061e -- interface ICluster
// f2e606e3-2631-11d1-89f1-00a0c90d061e -- interface ClusNode
// f2e606e4-2631-11d1-89f1-00a0c90d061e -- interface ClusNodes
// f2e606e5-2631-11d1-89f1-00a0c90d061e -- interface ClusResGroup
// f2e606e6-2631-11d1-89f1-00a0c90d061e -- interface ClusResGroups
// f2e606e7-2631-11d1-89f1-00a0c90d061e -- interface ClusResource
// f2e606e8-2631-11d1-89f1-00a0c90d061e -- interface ClusResources
// f2e606e9-2631-11d1-89f1-00a0c90d061e -- interface ClusResType
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 ICluster;
// A reference Object that reference Counts the Cluster Handle.
// This wouldn't close the Cluster, till the reference count becomes
// zero. Every interface is passed this object instead of the Cluster
// Handle. The interfaces increment the reference count as they are passed
// this object and decrements on removal. This eliminates the Circular
// reference problem.
interface ClusRefObject;
interface ClusObjCollection; // Base Class for all collections.
interface DomainNames;
interface ClusterNames;
interface ClusObj; // Base Class for all the Cluster Objects viz. ClusNode, ClusResGroup,
// ClusNetwork, ClusNetInterface and ClusResource.
//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;
// resource collection in ICluster.
interface ClusResources;
//old interface ResourceType;
interface ClusResType;
//old interface ResourceTypes;
interface ClusResTypes;
//old interface ClusterProperty;
interface ClusProperty;
//old interface ClusterProperties;
interface ClusProperties;
// New ClusObj derived interfaces.
interface ClusNetwork;
interface ClusNetInterface;
// New Collections.
// resouce collection in ClusResource.
interface ClusResDependencies;
// resource collection in ClusResGroup.
interface ClusGroupResources;
// resource collection in ClusResourceType.
interface ClusResTypeResources;
// Nodes collection in ClusResGroup.
interface ClusGroupOwners;
// Nodes collection in ClusResource.
interface ClusResOwners;
// Networks collection in ICluster.
interface ClusNetworks;
// Netinterface collection in ICluster.
interface ClusNetInterfaces;
// Netinterface collection in ClusNetwork.
interface ClusNodeNetInterfaces;
// Netinterface collection in ICluster.
interface ClusNetworkNetInterfaces;
//
///////////////////////////////////////
/////////////////////////////////////////////////
// Application
[
object,
uuid(f2e606e0-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Application Interface"),
hidden,
pointer_default(unique)
]
interface IClusterApplication : IDispatch
{
[propget]
HRESULT DomainNames( [out, retval] DomainNames ** ppDomains );
[propget]
HRESULT ClusterNames( [in] BSTR bstrDomainName, [out, retval] ClusterNames ** ppClusters );
HRESULT OpenCluster( [in] BSTR bstrClusterName, [out, retval] ICluster ** pCluster );
};
/////////////////////////////////////////////////
// ClusObjCollection
[
object,
uuid(f2e606ee-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("collections Base Class"),
pointer_default(unique)
]
interface ClusObjCollection : IDispatch
{
[propget]
HRESULT Count( [out, retval] LONG * pnCount );
[propget, restricted, id(DISPID_NEWENUM),
helpstring("returns an enumerator for the collection.")] // Must be propget.
HRESULT _NewEnum([out, retval] IUnknown** retval);
[helpstring("Refresh data in collection")]
HRESULT Refresh();
};
/////////////////////////////////////////////////
// DomainNames
[
object,
uuid(f2e606ed-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Domain Names collection"),
pointer_default(unique)
]
interface DomainNames : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] LONG nIndex , [out, retval] BSTR* pbstrDomainName);
};
/////////////////////////////////////////////////
// ClusterNames
[
object,
uuid(f2e606e1-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("ClusterNames collection"),
pointer_default(unique)
]
interface ClusterNames : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] LONG nIndex , [out, retval] BSTR* pbstrClusterName);
[propget]
HRESULT DomainName( [out, retval] BSTR * pbstrDomainName );
};
/////////////////////////////////////////////////
// ClusRefObject
[
object,
uuid(f2e606fe-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Reference Object Interface"),
hidden,
pointer_default(unique)
]
interface ClusRefObject : IDispatch
{
[propget]
HRESULT Handle( [out, retval] LONG * phandle );
};
/////////////////////////////////////////////////
// ClusObj
[
object,
uuid(f2e606ef-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Object Base Class"),
pointer_default(unique)
]
interface ClusObj : IDispatch
{
[propget]
HRESULT Name( [out, retval] BSTR * pbstrName );
[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 );
};
/////////////////////////////////////////////////
// ICluster
[
object,
uuid(f2e606e2-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("ICluster Interface"),
hidden,
pointer_default(unique)
]
interface ICluster : ClusObj
{
/////////////////////////////////
// Cluster
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
HRESULT Open( [in] BSTR bstrClusterName );
// HRESULT Close();
[propput]
HRESULT Name( [in] BSTR bstrClusterName );
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 );
/////////////////////////////////
// Quorum Info
HRESULT SetQuorumInfo([in] BSTR DevicePath, [in] LONG nLogSize);
HRESULT GetQuorumInfo([out] BSTR* DevicePath, [out] LONG* pLogSize);
/////////////////////////////////
// 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 );
/////////////////////////////////
// Cluster Networks
[propget]
HRESULT Networks( [out, retval] ClusNetworks ** ppNetworks );
/////////////////////////////////
// Cluster NetInterfaces
[propget]
HRESULT NetInterfaces( [out, retval] ClusNetInterfaces ** ppNetInterfaces );
};
/////////////////////////////////////////////////
// ClusNode
[
object,
uuid(f2e606e3-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Node Interface"),
pointer_default(unique)
]
interface ClusNode : ClusObj
{
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
[propget]
HRESULT NodeID( [out, retval] BSTR * pbstrNodeID );
[propget]
HRESULT State( [out,retval] CLUSTER_NODE_STATE* dwState );
HRESULT Pause();
HRESULT Resume();
HRESULT Evict();
[propget]
HRESULT ResourceGroups( [out, retval] ClusResGroups ** ppResourceGroups );
[propget]
HRESULT Cluster( [out,retval] ICluster ** ppCluster );
[propget]
HRESULT NetInterfaces( [out,retval] ClusNodeNetInterfaces ** ppClusNetInterfaces );
};
/////////////////////////////////////////////////
// ClusNodes
[
object,
uuid(f2e606e4-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Nodes Interface"),
pointer_default(unique)
]
interface ClusNodes : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNode ** ppClusNode);
};
/////////////////////////////////////////////////
// ClusNetwork
[
object,
uuid(f2e606f3-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Network Interface"),
pointer_default(unique)
]
interface ClusNetwork : ClusObj
{
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
[propput]
HRESULT Name( [in] BSTR bstrNetworkName );
[propget]
HRESULT NetworkID( [out, retval] BSTR * pbstrNetworkID );
[propget]
HRESULT State( [out,retval] CLUSTER_NETWORK_STATE* dwState );
[propget]
HRESULT NetInterfaces([out, retval] ClusNetworkNetInterfaces ** ppClusNetInterfaces);
[propget]
HRESULT Cluster( [out,retval] ICluster ** ppCluster );
};
/////////////////////////////////////////////////
// ClusNetworks
[
object,
uuid(f2e606fa-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Network Collection Interface"),
pointer_default(unique)
]
interface ClusNetworks : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNetwork ** ppClusNetwork);
};
/////////////////////////////////////////////////
// ClusNetInterface
[
object,
uuid(f2e606f4-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster NetInterface Interface"),
pointer_default(unique)
]
interface ClusNetInterface : ClusObj
{
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
[propget]
HRESULT State( [out,retval] CLUSTER_NETINTERFACE_STATE * dwState );
[propget]
HRESULT Cluster( [out,retval] ICluster ** ppCluster );
};
/////////////////////////////////////////////////
// ClusNetInterfaces
[
object,
uuid(f2e606fb-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster NetInterface Collection Interface in ICluster"),
pointer_default(unique)
]
interface ClusNetInterfaces : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNetInterface ** ppClusNetInterface);
};
/////////////////////////////////////////////////
// ClusNodeNetInterfaces
[
object,
uuid(f2e606fd-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster NetInterface Collection Interface in Node"),
pointer_default(unique)
]
interface ClusNodeNetInterfaces : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNetInterface ** ppClusNetInterface);
};
/////////////////////////////////////////////////
// ClusNetworkNetInterfaces
[
object,
uuid(f2e606fc-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster NetInterface Collection Interface in ClusNetwork"),
pointer_default(unique)
]
interface ClusNetworkNetInterfaces : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNetInterface ** ppClusNetInterface);
};
/////////////////////////////////////////////////
// ClusResGroup
[
object,
uuid(f2e606e5-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resource Group Interface"),
pointer_default(unique)
]
interface ClusResGroup : ClusObj
{
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
[propput]
HRESULT Name( [in] BSTR bstrGroupName );
[propget]
HRESULT State( [out,retval] CLUSTER_GROUP_STATE * dwState );
[propget]
HRESULT OwnerNode( [out,retval] ClusNode ** ppOwnerNode );
[propget]
HRESULT Resources( [out, retval] ClusGroupResources ** ppClusterGroupResources );
[propget]
HRESULT PreferredOwnerNodes( [out, retval] ClusGroupOwners ** ppOwnerNodes );
HRESULT SetPreferredOwnerNodes();
HRESULT Delete();
HRESULT Online( [in] LONG nTimeout, [in, optional] ClusNode * pDestinationNode,[out,retval] LONG* bPending );
HRESULT Move( [in] LONG nTimeout, [in, optional] ClusNode * pDestinationNode,[out,retval] LONG* bPending );
HRESULT Offline([in] LONG nTimeout, [out,retval] LONG* bPending);
[propget]
HRESULT Cluster( [out,retval] ICluster ** ppCluster );
};
/////////////////////////////////////////////////
// ClusResGroups
[
object,
uuid(f2e606e6-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resource Groups Interface"),
pointer_default(unique)
]
interface ClusResGroups : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResGroup ** ppClusResGroup);
[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 );
};
/////////////////////////////////////////////////
// ClusResource
[
object,
uuid(f2e606e7-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resource Interface"),
pointer_default(unique)
]
interface ClusResource : ClusObj
{
[propget, hidden]
HRESULT Handle( [out, retval] LONG * phandle );
[propput]
HRESULT Name( [in] BSTR bstrResourceName );
[propget]
HRESULT State( [out,retval] CLUSTER_RESOURCE_STATE* dwState );
HRESULT BecomeQuorumResource( [in] BSTR bstrDevicePath, [in] LONG lMaxLogSize );
HRESULT Delete();
HRESULT Fail();
HRESULT Online(LONG nTimeout,LONG* bPending);
HRESULT Offline(LONG nTimeout, LONG* bPending);
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 PossibleOwnerNodes( [out, retval] ClusResOwners ** ppNodes );
[propget]
HRESULT Dependencies( [out, retval] ClusResDependencies ** ppResDependencies );
[propget]
HRESULT Group( [out, retval] ClusResGroup ** ppResGroup );
[propget]
HRESULT OwnerNode( [out, retval] ClusNode ** ppNode );
[propget]
HRESULT Cluster( [out, retval] ICluster ** ppCluster );
};
/////////////////////////////////////////////////
// ClusResDependencies
[
object,
uuid(f2e606f5-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Resource Dependencies for a resource"),
pointer_default(unique)
]
interface ClusResDependencies : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResource ** ppClusResource);
[helpstring("Create a new resource.and add it to the dependency list")]
HRESULT CreateItem(
[in] BSTR bstrResourceName,
[in] BSTR bstrResourceType,
[in] BSTR bstrGroupName,
[in] CLUSTER_RESOURCE_CREATE_FLAGS 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 );
};
/////////////////////////////////////////////////
// ClusGroupResources
[
object,
uuid(f2e606f6-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Resources Collection in a group"),
pointer_default(unique)
]
interface ClusGroupResources : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResource ** ppClusResource);
[helpstring("Create a new resource.")]
HRESULT CreateItem(
[in] BSTR bstrResourceName,
[in] BSTR bstrResourceType,
[in] CLUSTER_RESOURCE_CREATE_FLAGS dwFlags,
[out, retval] ClusResource ** ppClusterResource );
[helpstring("Delete a resource by name or index.")]
HRESULT DeleteItem( [in] VARIANT varIndex );
};
/////////////////////////////////////////////////
// ClusResTypeResources
[
object,
uuid(f2e606f7-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("ClusResTypeResources Collection"),
pointer_default(unique)
]
interface ClusResTypeResources : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResource ** ppClusResource);
[helpstring("Create a new resource.")]
HRESULT CreateItem(
[in] BSTR bstrResourceName,
[in] BSTR bstrGroupName,
[in] CLUSTER_RESOURCE_CREATE_FLAGS dwFlags,
[out, retval] ClusResource ** ppClusterResource );
[helpstring("Delete a resource by name or index.")]
HRESULT DeleteItem( [in] VARIANT varIndex );
};
// A Resource Collection in the ICluster Object.
/////////////////////////////////////////////////
// ClusResources
[
object,
uuid(f2e606e8-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resources Collection"),
pointer_default(unique)
]
interface ClusResources : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResource ** ppClusResource);
[helpstring("Create a new resource and add it to the Resource list in the Cluster Object")]
HRESULT CreateItem(
[in] BSTR bstrResourceName,
[in] BSTR bstrResourceType,
[in] BSTR bstrGroupName,
[in] CLUSTER_RESOURCE_CREATE_FLAGS dwFlags,
[out, retval] ClusResource ** ppClusterResource );
[helpstring("Delete a resource by name or index.")]
HRESULT DeleteItem( [in] VARIANT varIndex );
};
/////////////////////////////////////////////////
// ClusGroupOwners
[
object,
uuid(f2e606f8-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Owner Nodes Collection"),
pointer_default(unique)
]
interface ClusGroupOwners : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNode ** ppClusNode);
[helpstring("Insert a Node into the collection")]
HRESULT InsertItem([in] ClusNode *pClusNode, [in,optional] LONG nPosition );
[helpstring("Delete a Node by name or index.")]
HRESULT RemoveItem( [in] VARIANT varIndex );
[propget]
HRESULT Modified([out,retval] boolean * flag);
};
/////////////////////////////////////////////////
// ClusResOwners
[
object,
uuid(f2e606f9-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Owner Nodes Collection"),
pointer_default(unique)
]
interface ClusResOwners : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusNode ** ppClusNode);
[helpstring("Add OwnerNode to the Possible Owner List of the Resource.")]
HRESULT AddItem( [in] ClusNode* pNode );
[helpstring("Remove a OwnerNode from the list by name or index.")]
HRESULT RemoveItem( [in] VARIANT varIndex );
[propget]
HRESULT Modified([out,retval] boolean * pbflag);
};
/////////////////////////////////////////////////
// ClusResType
[
object,
uuid(f2e606e9-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resource Type"),
pointer_default(unique)
]
interface ClusResType : ClusObj
{
HRESULT Delete();
[propget]
HRESULT Cluster( [out,retval] ICluster ** ppCluster );
/////////////////////////////////
// Cluster Resources
[propget]
HRESULT Resources( [out, retval] ClusResTypeResources ** ppClusterResTypeResources );
};
/////////////////////////////////////////////////
// ClusResTypes
[
object,
uuid(f2e606ea-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("Cluster Resource Types Collection"),
pointer_default(unique)
]
interface ClusResTypes : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusResType ** ppClusResType);
[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 );
};
/////////////////////////////////////////////////
// ClusProperty
[
object,
uuid(f2e606eb-2631-11d1-89f1-00a0c90d061e),
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(f2e606ec-2631-11d1-89f1-00a0c90d061e),
dual,
helpstring("ClusProperty collection"),
pointer_default(unique)
]
interface ClusProperties : ClusObjCollection
{
[propget, id(DISPID_VALUE), helpstring("Given an index, returns an item in the collection.")]
HRESULT Item([in] VARIANT varIndex , [out, retval] ClusProperty ** ppClusProperty);
[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("Save all property changes")]
HRESULT SaveChanges();
};
/////////////////////////////////////////////////////////
// MSClusterLib
[
uuid(f2e606f0-2631-11d1-89f1-00a0c90d061e),
version(1.0),
helpstring("MS Cluster 1.0 Type Library")
]
library MSClusterLib
{
importlib("stdole32.tlb");
// Temporary include file for CLUSAPI constants.
// #include "cluconst.idl"
[
uuid(f2e606f1-2631-11d1-89f1-00a0c90d061e),
helpstring("Application Class")
]
coclass Application
{
[default] interface IClusterApplication;
};
[
uuid(f2e606f2-2631-11d1-89f1-00a0c90d061e),
helpstring("Cluster Class")
]
coclass Cluster
{
[default] interface ICluster;
};
};