windows-nt/Source/XPSP1/NT/base/cluster/admin/cluadmin/dataobj.h
2020-09-26 16:20:57 +08:00

232 lines
6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996 Microsoft Corporation
//
// Module Name:
// DataObj.h
//
// Abstract:
// Definition of the CDataObject class, which is the IDataObject
// class used to transfer data between CluAdmin and the extension DLL
// handlers.
//
// Author:
// David Potter (davidp) June 4, 1996
//
// Implementation File:
// DataObj.cpp
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _DATAOBJ_H_
#define _DATAOBJ_H_
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
#ifndef __cluadmex_h__
#include "CluAdmEx.h"
#endif
#ifndef __cluadmid_h__
#include "CluAdmID.h"
#endif
#ifndef _RESOURCE_H_
#include "resource.h"
#define _RESOURCE_H_
#endif
/////////////////////////////////////////////////////////////////////////////
// Type Declarations
/////////////////////////////////////////////////////////////////////////////
typedef BOOL (*PFGETRESOURCENETWORKNAME)(
OUT BSTR lpszNetName,
IN OUT DWORD * pcchNetName,
IN OUT PVOID pvContext
);
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CDataObject;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterItem;
/////////////////////////////////////////////////////////////////////////////
//
// class CDataObject
//
// Purpose:
// Encapsulates the IDataObject interface for exchanging data with
// extension DLL handlers.
//
/////////////////////////////////////////////////////////////////////////////
class CDataObject :
public CObject,
public IGetClusterUIInfo,
public IGetClusterDataInfo,
public IGetClusterObjectInfo,
public IGetClusterNodeInfo,
public IGetClusterGroupInfo,
public IGetClusterResourceInfo,
public IGetClusterNetworkInfo,
public IGetClusterNetInterfaceInfo,
public ISupportErrorInfo,
public CComObjectRoot,
public CComCoClass<CDataObject, &CLSID_CoCluAdminData>
{
DECLARE_DYNAMIC(CDataObject)
public:
// Constructors
CDataObject(void); // protected constructor used by dynamic creation
virtual ~CDataObject(void);
// Second-phase constructor.
void Init(
IN OUT CClusterItem * pci,
IN LCID lcid,
IN HFONT hfont,
IN HICON hicon
);
BEGIN_COM_MAP(CDataObject)
COM_INTERFACE_ENTRY(IGetClusterUIInfo)
COM_INTERFACE_ENTRY(IGetClusterDataInfo)
COM_INTERFACE_ENTRY(IGetClusterObjectInfo)
COM_INTERFACE_ENTRY(IGetClusterNodeInfo)
COM_INTERFACE_ENTRY(IGetClusterGroupInfo)
COM_INTERFACE_ENTRY(IGetClusterResourceInfo)
COM_INTERFACE_ENTRY(IGetClusterNetworkInfo)
COM_INTERFACE_ENTRY(IGetClusterNetInterfaceInfo)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
//DECLARE_NOT_AGGREGATABLE(CDataObject)
// Remove the comment from the line above if you don't want your object to
// support aggregation. The default is to support it
DECLARE_REGISTRY(CDataObject, _T("CLUADMIN.Data"), _T("CLUADMIN.Data"), IDS_CLUADMIN_DESC, THREADFLAGS_BOTH)
// Attributes
protected:
CClusterItem * m_pci; // Cluster item for which a prop sheet is being displayed.
LCID m_lcid; // Locale ID of resources to be loaded by extension.
HFONT m_hfont; // Font for all text.
HICON m_hicon; // Icon for upper left corner.
PFGETRESOURCENETWORKNAME m_pfGetResNetName; // Pointer to static function for getting net name for resource.
PVOID m_pvGetResNetNameContext; // Context for m_pfGetResNetName;
CClusterItem * Pci(void) { return m_pci; }
LCID Lcid(void) { return m_lcid; }
HFONT Hfont(void) { return m_hfont; }
HICON Hicon(void) { return m_hicon; }
public:
PFGETRESOURCENETWORKNAME PfGetResNetName(void) const { return m_pfGetResNetName; }
void SetPfGetResNetName(PFGETRESOURCENETWORKNAME pfGetResNetName, PVOID pvContext)
{
m_pfGetResNetName = pfGetResNetName;
m_pvGetResNetNameContext = pvContext;
}
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDataObject)
//}}AFX_VIRTUAL
// ISupportsErrorInfo
public:
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IGetClusterUIInfo
public:
STDMETHOD_(LCID, GetLocale)(void);
STDMETHOD_(HFONT, GetFont)(void);
STDMETHOD_(HICON, GetIcon)(void);
// IGetClusterDataInfo
public:
STDMETHOD(GetClusterName)(
OUT BSTR lpszName,
IN OUT LONG * plMaxLength
);
STDMETHOD_(HCLUSTER, GetClusterHandle)(void);
STDMETHOD_(LONG, GetObjectCount)(void);
// IGetClusterObjectInfo
public:
STDMETHOD(GetObjectName)(
IN LONG lObjIndex,
OUT BSTR lpszName,
IN OUT LONG * plMaxLength
);
STDMETHOD_(CLUADMEX_OBJECT_TYPE, GetObjectType)(
IN LONG lObjIndex
);
// IGetClusterNodeInfo
public:
STDMETHOD_(HNODE, GetNodeHandle)(
IN LONG lObjIndex
);
// IGetClusterGroupInfo
public:
STDMETHOD_(HGROUP, GetGroupHandle)(
IN LONG lObjIndex
);
// IGetClusterResourceInfo
public:
STDMETHOD_(HRESOURCE, GetResourceHandle)(
IN LONG lObjIndex
);
STDMETHOD(GetResourceTypeName)(
IN LONG lObjIndex,
OUT BSTR lpszResourceTypeName,
IN OUT LONG * pcchName
);
STDMETHOD_(BOOL, GetResourceNetworkName)(
IN LONG lobjIndex,
OUT BSTR lpszNetName,
IN OUT ULONG * pcchNetName
);
// IGetClusterNetworkInfo
public:
STDMETHOD_(HNETWORK, GetNetworkHandle)(
IN LONG lObjIndex
);
// IGetClusterNetInterfaceInfo
public:
STDMETHOD_(HNETINTERFACE, GetNetInterfaceHandle)(
IN LONG lObjIndex
);
// Implementation
protected:
AFX_MODULE_STATE * m_pModuleState; // Required for resetting our state during callbacks.
}; //*** class CDataObject
/////////////////////////////////////////////////////////////////////////////
#endif // _DATAOBJ_H_