Windows2003-3790/net/mmc/wins/winscomp.h
2020-09-30 16:53:55 +02:00

219 lines
6.7 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corporation, 1997 - 1998 **/
/**********************************************************************/
/*
winscomp.h
This file contains the derived prototypes from CComponent
and CComponentData for the WINS admin snapin.
FILE HISTORY:
*/
#ifndef _WINSCOMP_H
#define _WINSCOMP_H
#include "resource.h" // main symbols
#ifndef __mmc_h__
#include <mmc.h>
#endif
#ifndef _COMPONT_H
#include "compont.h"
#endif
#ifndef _XSTREAM_H
#include "xstream.h"
#endif
#define COLORREF_PINK 0x00FF00FF
#define WINSSNAP_FILE_VERSION 0x00000001
#define GETHANDLER(classname, node) (reinterpret_cast<classname *>(node->GetData(TFS_DATA_USER)))
#define STRING_LENGTH_MAX 256
enum WINSSTRM_TAG
{
WINSSTRM_TAG_VERSION = XFER_TAG(1, XFER_DWORD),
WINSSTRM_TAG_VERSIONADMIN = XFER_TAG(2, XFER_LARGEINTEGER),
WINSSTRM_TAB_SNAPIN_NAME = XFER_TAG(3, XFER_STRING),
WINSSTRM_TAG_SERVER_IP = XFER_TAG(4, XFER_DWORD_ARRAY),
WINSSTRM_TAG_SERVER_NAME = XFER_TAG(5, XFER_STRING_ARRAY),
WINSSTRM_TAG_SERVER_CONNECTED = XFER_TAG(6, XFER_STRING_ARRAY),
WINSSTRM_TAG_SERVER_FLAGS = XFER_TAG(10, XFER_DWORD_ARRAY),
WINSSTRM_TAG_SERVER_REFRESHINTERVAL = XFER_TAG(11, XFER_DWORD_ARRAY),
WINSSTRM_TAG_COLUMN_INFO = XFER_TAG(12, XFER_DWORD_ARRAY),
WINSSTRM_TAG_SNAPIN_FLAGS = XFER_TAG(13, XFER_DWORD),
WINSSTRM_TAG_UPDATE_INTERVAL = XFER_TAG(14, XFER_DWORD)
};
typedef enum _ICON_INDICIES
{
ICON_IDX_ACTREG_FOLDER_CLOSED,
ICON_IDX_ACTREG_FOLDER_CLOSED_BUSY,
ICON_IDX_ACTREG_FOLDER_OPEN,
ICON_IDX_ACTREG_FOLDER_OPEN_BUSY,
ICON_IDX_CLIENT,
ICON_IDX_CLIENT_GROUP,
ICON_IDX_PARTNER,
ICON_IDX_REP_PARTNERS_FOLDER_CLOSED,
ICON_IDX_REP_PARTNERS_FOLDER_CLOSED_BUSY,
ICON_IDX_REP_PARTNERS_FOLDER_CLOSED_LOST_CONNECTION,
ICON_IDX_REP_PARTNERS_FOLDER_OPEN,
ICON_IDX_REP_PARTNERS_FOLDER_OPEN_BUSY,
ICON_IDX_REP_PARTNERS_FOLDER_OPEN_LOST_CONNECTION,
ICON_IDX_SERVER,
ICON_IDX_SERVER_BUSY,
ICON_IDX_SERVER_CONNECTED,
ICON_IDX_SERVER_LOST_CONNECTION,
ICON_IDX_SERVER_NO_ACCESS,
ICON_IDX_WINS_PRODUCT,
ICON_IDX_MAX
} ICON_INDICIES, * LPICON_INDICIES;
// icon image map
extern UINT g_uIconMap[ICON_IDX_MAX + 1][2];
/////////////////////////////////////////////////////////////////////////////
// CWinsComponentData
class CWinsComponentData :
public CComponentData,
public CComObjectRoot
{
public:
BEGIN_COM_MAP(CWinsComponentData)
COM_INTERFACE_ENTRY(IComponentData)
COM_INTERFACE_ENTRY(IExtendPropertySheet)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY(ISnapinHelp)
END_COM_MAP()
// These are the interfaces that we MUST implement
// We will implement our common behavior here, with the derived
// classes implementing the specific behavior.
DeclareIPersistStreamInitMembers(IMPL)
DeclareITFSCompDataCallbackMembers(IMPL)
CWinsComponentData();
HRESULT FinalConstruct();
void FinalRelease();
protected:
SPITFSNodeMgr m_spNodeMgr;
SPITFSNode m_spRootNode;
// Notify handler declarations
private:
};
/////////////////////////////////////////////////////////////////////////////
// CWinsComponent
class CWinsComponent :
public TFSComponent
{
public:
CWinsComponent();
~CWinsComponent();
//DeclareITFSCompCallbackMembers(IMPL)
STDMETHOD(InitializeBitmaps)(MMC_COOKIE cookie);
STDMETHOD(QueryDataObject) (MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT *ppDataObject);
STDMETHOD(CompareObjects)(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
// snap-in help
STDMETHOD(OnSnapinHelp)(LPDATAOBJECT pDataObject, LPARAM arg, LPARAM param);
//Attributes
private:
};
/*---------------------------------------------------------------------------
This is how the WINS snapin implements its extension functionality.
It actually exposes two interfaces that are CoCreate-able. One is the
primary interface, the other the extension interface.
Author: EricDav
---------------------------------------------------------------------------*/
class CWinsComponentDataPrimary : public CWinsComponentData,
public CComCoClass<CWinsComponentDataPrimary, &CLSID_WinsSnapin>
{
public:
DECLARE_REGISTRY(CWinsComponentDataPrimary,
_T("WinsSnapin.WinsSnapin.1"),
_T("WinsSnapin.WinsSnapin"),
IDS_SNAPIN_DESC, THREADFLAGS_BOTH)
STDMETHODIMP_(const CLSID *)GetCoClassID() { return &CLSID_WinsSnapin; }
};
class CWinsComponentDataExtension : public CWinsComponentData,
public CComCoClass<CWinsComponentDataExtension, &CLSID_WinsSnapinExtension>
{
public:
DECLARE_REGISTRY(CWinsComponentDataExtension,
_T("WinsSnapinExtension.WinsSnapinExtension.1"),
_T("WinsSnapinExtension.WinsSnapinExtension"),
IDS_SNAPIN_DESC, THREADFLAGS_BOTH)
STDMETHODIMP_(const CLSID *)GetCoClassID() { return &CLSID_WinsSnapinExtension; }
};
/*---------------------------------------------------------------------------
This is the derived class for handling the IAbout interface from MMC
Author: EricDav
---------------------------------------------------------------------------*/
class CWinsAbout :
public CAbout,
public CComCoClass<CWinsAbout, &CLSID_WinsSnapinAbout>
{
public:
DECLARE_REGISTRY(CWinsAbout, _T("WinsSnapin.About.1"),
_T("WinsSnapin.About"),
IDS_SNAPIN_DESC, THREADFLAGS_BOTH)
BEGIN_COM_MAP(CWinsAbout)
COM_INTERFACE_ENTRY(ISnapinAbout) // Must have one static entry
COM_INTERFACE_ENTRY_CHAIN(CAbout) // chain to the base class
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CWinsAbout)
// these must be overridden to provide values to the base class
protected:
virtual UINT GetAboutDescriptionId() { return IDS_ABOUT_DESCRIPTION; }
virtual UINT GetAboutProviderId() { return IDS_ABOUT_PROVIDER; }
virtual UINT GetAboutVersionId() { return IDS_ABOUT_VERSION; }
virtual UINT GetAboutIconId() { return IDI_WINS_SNAPIN; }
virtual UINT GetSmallRootId() { return IDB_ROOT_SMALL; }
virtual UINT GetSmallOpenRootId() { return IDB_ROOT_SMALL; }
virtual UINT GetLargeRootId() { return IDB_ROOT_LARGE; }
virtual COLORREF GetLargeColorMask() { return (COLORREF) COLORREF_PINK; }
};
class CThemeContextActivator
{
public:
CThemeContextActivator() : m_ulActivationCookie(0)
{ SHActivateContext (&m_ulActivationCookie); }
~CThemeContextActivator()
{ SHDeactivateContext (m_ulActivationCookie); }
private:
ULONG_PTR m_ulActivationCookie;
};
#endif _WINSCOMP_H