⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msclus.idl

📁 vc6.0完整版
💻 IDL
📖 第 1 页 / 共 2 页
字号:
//
// 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]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -