///////////////////////////////////////////////////////////////////////////// // // 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 { 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_