246 lines
6 KiB
C++
246 lines
6 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
|
|
Module Name:
|
|
|
|
MachineNode.h
|
|
|
|
Abstract:
|
|
|
|
Header file for the MachineNode subnode.
|
|
|
|
See MachineNode.cpp for implementation.
|
|
|
|
Revision History:
|
|
mmaguire 12/03/97 - created
|
|
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(_NAP_MACHINE_NODE_H_)
|
|
#define _NAP_MACHINE_NODE_H_
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// BEGIN INCLUDES
|
|
//
|
|
// where we can find what this class derives from:
|
|
//
|
|
#include "SnapinNode.h"
|
|
#include "rtradvise.h"
|
|
|
|
//
|
|
//
|
|
// where we can find what this class has or uses:
|
|
//
|
|
#include "PoliciesNode.h"
|
|
#include "ConnectionToServer.h"
|
|
#include <map>
|
|
#include <string>
|
|
//
|
|
// END INCLUDES
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Functor needed for CComBSTR comparison used in map below
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//class MySort
|
|
//{
|
|
//
|
|
//public:
|
|
//
|
|
// MySort()
|
|
// {
|
|
// ;
|
|
// }
|
|
//
|
|
//// bool operator()( const CComBSTR & x, const CComBSTR & y) const throw ()
|
|
//
|
|
// bool operator()( const pair< CComBSTR, CMachineNode* > & x, const pair< CComBSTR, CMachineNode* > & y) const throw ()
|
|
// {
|
|
//
|
|
// bool bReturnValue = FALSE;
|
|
//
|
|
// return bReturnValue;
|
|
//
|
|
// }
|
|
//
|
|
//};
|
|
|
|
|
|
|
|
class CComponentData;
|
|
class CComponent;
|
|
|
|
|
|
//typedef std::map< string, CMachineNode *, MySort() > SERVERSMAP;
|
|
typedef std::map< std::basic_string< wchar_t > , CMachineNode * > SERVERSMAP;
|
|
|
|
|
|
class CMachineNode : public CSnapinNode< CMachineNode, CComponentData, CComponent >
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
// Clipboard format through which this extension snapin receives
|
|
// information about machine it's focussed on.
|
|
static CLIPFORMAT m_CCF_MMC_SNAPIN_MACHINE_NAME;
|
|
|
|
static void InitClipboardFormat();
|
|
|
|
|
|
// Returns whether we extend a particular GUID and sets the
|
|
// m_enumExtendedSnapin to indicate which snapin we are extending.
|
|
BOOL IsSupportedGUID( GUID & guid );
|
|
|
|
// Indicates which standalone snapin we are extending.
|
|
_enum_EXTENDED_SNAPIN m_enumExtendedSnapin;
|
|
|
|
|
|
|
|
HRESULT InitSdoObjects();
|
|
|
|
SNAPINMENUID(IDM_MACHINE_NODE)
|
|
|
|
BEGIN_SNAPINTOOLBARID_MAP(CMachineNode)
|
|
SNAPINTOOLBARID_ENTRY(IDR_MACHINE_TOOLBAR)
|
|
END_SNAPINTOOLBARID_MAP()
|
|
|
|
CSnapInItem * GetExtNodeObject(LPDATAOBJECT pDataObject, CMachineNode * pDataClass );
|
|
|
|
CMachineNode();
|
|
|
|
~CMachineNode();
|
|
|
|
LPOLESTR GetResultPaneColInfo(int nCol);
|
|
|
|
// Pointer to the CComponentData object owning this node.
|
|
// A root node doesn't belong to another node, so its
|
|
// m_pParentNode pointer is NULL.
|
|
// Rather it is owned by the unique IComponentData object
|
|
// for this snapin.
|
|
// We pass in this CComponentData pointer during CComponentData initialization.
|
|
// By storing this pointer, we can have access to member
|
|
// variables stored in CComponentData, e.g. a pointer to IConsole.
|
|
// Since all nodes store a pointer to their parent, any node
|
|
// can look its way up the tree and get access to CComponentData.
|
|
CComponentData * m_pComponentData;
|
|
|
|
|
|
void InitDataClass(IDataObject* pDataObject, CSnapInItem* pDefault);
|
|
|
|
BOOL m_fAlreadyAnalyzedDataClass;
|
|
BOOL m_bConfigureLocal;
|
|
|
|
CComBSTR m_bstrServerAddress;
|
|
|
|
|
|
HRESULT DataRefresh();
|
|
|
|
virtual HRESULT OnExpand(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
, IComponentData * pComponentData
|
|
, IComponent * pComponent
|
|
, DATA_OBJECT_TYPES type
|
|
);
|
|
|
|
virtual HRESULT OnRename(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
, IComponentData * pComponentData
|
|
, IComponent * pComponent
|
|
, DATA_OBJECT_TYPES type
|
|
);
|
|
|
|
virtual HRESULT OnRemoveChildren(
|
|
LPARAM arg
|
|
, LPARAM param
|
|
, IComponentData * pComponentData
|
|
, IComponent * pComponent
|
|
, DATA_OBJECT_TYPES type
|
|
);
|
|
|
|
STDMETHOD(TaskNotify)(
|
|
IDataObject * pDataObject
|
|
, VARIANT * pvarg
|
|
, VARIANT * pvparam
|
|
);
|
|
|
|
STDMETHOD(EnumTasks)(
|
|
IDataObject * pDataObject
|
|
, BSTR szTaskGroup
|
|
, IEnumTASK** ppEnumTASK
|
|
);
|
|
|
|
HRESULT OnTaskPadDefineNetworkAccessPolicy(
|
|
IDataObject * pDataObject
|
|
, VARIANT * pvarg
|
|
, VARIANT * pvparam
|
|
);
|
|
|
|
|
|
CComponentData * GetComponentData( void );
|
|
|
|
// Pointers to child nodes.
|
|
CPoliciesNode * m_pPoliciesNode; // this is one CPoliciesNode object
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Asynchrnous connect related...
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
HRESULT BeginConnectAction( void );
|
|
HRESULT LoadSdoData(BOOL fDSAvailable);
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RRAS related
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// OnRRASChange -- to decide if to show RAP node under the machine node
|
|
// Only show RAP node if NT Authentication is selected
|
|
HRESULT OnRRASChange(
|
|
/* [in] */ LONG_PTR ulConnection,
|
|
/* [in] */ DWORD dwChangeType,
|
|
/* [in] */ DWORD dwObjectType,
|
|
/* [in] */ LPARAM lUserParam,
|
|
/* [in] */ LPARAM lParam);
|
|
|
|
HRESULT TryShow(BOOL* pbVisible);
|
|
|
|
|
|
BOOL m_bServerSupported;
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// SDO related pointers
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
protected:
|
|
virtual HRESULT SetVerbs( IConsoleVerb * pConsoleVerb );
|
|
BOOL m_fSdoConnected;
|
|
BOOL m_fUseActiveDirectory;
|
|
BOOL m_fDSAvailable;
|
|
CConnectionToServer* m_pConnectionToServer;
|
|
|
|
BOOL m_fNodeHasUI;
|
|
|
|
|
|
// For extending snapins like RRAS which have multiple machine views.
|
|
SERVERSMAP m_mapMachineNodes;
|
|
CComPtr< CRtrAdviseSinkForIAS<CMachineNode> > m_spRtrAdviseSink;
|
|
};
|
|
|
|
|
|
_declspec( selectany ) CLIPFORMAT CMachineNode::m_CCF_MMC_SNAPIN_MACHINE_NAME = 0;
|
|
// _declspec( selectany ) _enum_EXTENDED_SNAPIN CMachineNode::m_enumExtendedSnapin = INTERNET_AUTHENTICATION_SERVICE_SNAPIN;
|
|
|
|
|
|
#endif // _NAP_MACHINE_NODE_H_
|