Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
950 lines
28 KiB
Plaintext
950 lines
28 KiB
Plaintext
//
|
|
// 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;
|
|
};
|
|
|
|
};
|