windows-nt/Source/XPSP1/NT/net/mmc/mprsnap/atlkview.h

243 lines
6.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//============================================================================
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: srview.h
//
// History:
// 09/05/97 Kenn M. Takara Created.
//
//
//============================================================================
#ifndef _ATLKVIEW_H
#define _ATLKVIEW_H
#ifndef _BASEHAND_H
#include "basehand.h"
#endif
#ifndef _HANDLERS_H
#include "handlers.h"
#endif
#ifndef _XSTREAM_H
#include "xstream.h" // need for ColumnData
#endif
#ifndef _INFO_H
#include "info.h"
#endif
#ifndef _IFACE_H
#include "iface.h"
#endif
#ifndef _BASECON_H
#include "basecon.h" // BaseContainerHandler
#endif
#ifndef _ATLKSTRM_H
#include "ATLKstrm.h"
#endif
#ifndef _RTRSHEET_H
#include "rtrsheet.h"
#endif
// forward declarations
struct SATLKNodeMenu;
class CAdapterInfo;
//
// If you ADD any columns to this enum, Be sure to update
// the string ids for the column headers in srview.cpp
//
enum
{
ATLK_SI_ADAPTER = 0,
ATLK_SI_STATUS,
ATLK_SI_NETRANGE,
ATLK_SI_MAX_COLUMNS,
};
/*---------------------------------------------------------------------------
We store a pointer to the IPConnection object in our node data
---------------------------------------------------------------------------*/
//
//#define GET_ATLK_NODEDATA(pNode) \
// (IPConnection *) pNode->GetData(TFS_DATA_USER)
//#define SET_ATLK_NODEDATA(pNode, pData) \
// pNode->SetData(TFS_DATA_USER, (ULONG) pData)
/*---------------------------------------------------------------------------
Struct: ATLKListEntry
This is an intermediate data structure.
---------------------------------------------------------------------------*/
struct ATLKListEntry
{
SPIInterfaceInfo m_spIf;
};
typedef CList<ATLKListEntry *, ATLKListEntry *> ATLKList;
/*---------------------------------------------------------------------------
Class: ATLKNodeHandler
---------------------------------------------------------------------------*/
class ATLKNodeHandler :
public BaseContainerHandler
{
public:
ATLKNodeHandler(ITFSComponentData *pTFSCompData);
~ATLKNodeHandler();
// Override QI to handle embedded interface
STDMETHOD(QueryInterface)(REFIID iid, LPVOID *ppv);
DeclareEmbeddedInterface(IRtrAdviseSink, IUnknown)
// base handler functionality we override
OVERRIDE_NodeHandler_HasPropertyPages();
OVERRIDE_NodeHandler_CreatePropertyPages();
OVERRIDE_NodeHandler_GetString();
OVERRIDE_NodeHandler_OnCreateDataObject();
OVERRIDE_NodeHandler_OnAddMenuItems();
OVERRIDE_NodeHandler_OnCommand();
OVERRIDE_NodeHandler_DestroyHandler();
OVERRIDE_BaseHandlerNotify_OnExpand();
OVERRIDE_BaseHandlerNotify_OnVerbRefresh();
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
OVERRIDE_ResultHandler_AddMenuItems();
OVERRIDE_ResultHandler_Command();
OVERRIDE_ResultHandler_CompareItems();
OVERRIDE_BaseResultHandlerNotify_OnResultShow();
// Initializes the handler
HRESULT Init(IRouterInfo *pRouter, ATLKConfigStream *pConfigStream);
// Initializes the node
HRESULT ConstructNode(ITFSNode *pNode);
public:
// Structure used to pass data to callbacks - used as a way of
// avoiding recomputation
struct SMenuData
{
SPITFSNode m_spNode;
};
static ULONG ATLKEnableFlags(const SRouterNodeMenu *pMenuData,
INT_PTR pUserData);
protected:
// Refresh the data for these nodes
HRESULT SynchronizeNodeData(ITFSNode *pThisNode);
HRESULT UnmarkAllNodes(ITFSNode *pNode, ITFSNodeEnum *pEnum);
HRESULT RemoveAllUnmarkedNodes(ITFSNode *pNode, ITFSNodeEnum *pEnum);
HRESULT SetAdapterData(ITFSNode *pNode,
CAdapterInfo *pAdapter,
DWORD dwEnableAtlkRouting);
// Helper function to add interfaces to the UI
HRESULT AddInterfaceNode(ITFSNode *pParent, IInterfaceInfo *pIf,
IInfoBase *pInfoBase, ITFSNode **ppNewNode);
// Functions to help determine if a netcard is ok
BOOL FIsFunctioningNetcard(LPCTSTR pszId);
// Command implementations
HRESULT OnNewInterface();
LONG_PTR m_ulConnId;// notification id for RtrMgrProt
LONG_PTR m_ulRefreshConnId; // notification id for Refresh
LONG_PTR m_ulStatsConnId;
MMC_COOKIE m_cookie; // cookie for the node
SPIRtrMgrInfo m_spRm;
SPIRtrMgrProtocolInfo m_spRmProt;
ATLKConfigStream * m_pConfigStream;
CString m_stTitle;
BOOL m_fProtocolIsRunning; // TRUE if protocol is running
// Members used by netcard detection routines
HDEVINFO m_hDevInfo;
// strings used in interface column descriptions
CString m_szProxy;
CString m_szRouterQuerier;
CString m_szRouterSilent;
// ATLKGroupStatistics m_ATLKGroupStats;
};
/*---------------------------------------------------------------------------
Class: ATLKInterfaceHandler
This is the handler for the interface nodes that appear in the ATLK
node.
---------------------------------------------------------------------------*/
class ATLKInterfaceHandler : public BaseResultHandler
{
public:
ATLKInterfaceHandler(ITFSComponentData *pCompData);
OVERRIDE_NodeHandler_HasPropertyPages();
OVERRIDE_NodeHandler_CreatePropertyPages();
OVERRIDE_NodeHandler_OnCreateDataObject();
OVERRIDE_ResultHandler_AddMenuItems();
OVERRIDE_ResultHandler_Command();
OVERRIDE_ResultHandler_OnCreateDataObject();
OVERRIDE_ResultHandler_DestroyResultHandler();
OVERRIDE_ResultHandler_HasPropertyPages()
{ return hrOK; };
OVERRIDE_ResultHandler_CreatePropertyPages();
OVERRIDE_BaseResultHandlerNotify_OnResultDelete();
// Initializes the node
HRESULT ConstructNode(ITFSNode *pNode, IInterfaceInfo *pIfInfo);
HRESULT Init(IInterfaceInfo *pInfo, ITFSNode *pParent, ATLKConfigStream *pConfigStream);
HRESULT OnRemoveInterface(ITFSNode *pNode);
// Refresh the data for this node
void RefreshInterface(MMC_COOKIE cookie);
public:
// Structure used to pass data to callbacks - used as a way of
// avoiding recomputation
struct SMenuData
{
ULONG m_ulMenuId;
SPITFSNode m_spNode;
};
protected:
SPIInterfaceInfo m_spInterfaceInfo;
// ATLKInterfaceStatistics m_ATLKInterfaceStats;
};
bool IfATLKRoutingEnabled();
#endif _ATLKVIEW_H