windows-nt/Source/XPSP1/NT/admin/snapin/smonlog/smlogcfg/compdata.h
2020-09-26 16:20:57 +08:00

263 lines
8 KiB
C++

/*++
Copyright (C) 1997-1999 Microsoft Corporation
Module Name:
compdata.h
Abstract:
This class is the interface that handles anything to do with
the scope pane. MMC calls the IComponentData interfaces.
--*/
#ifndef __COMPDATA_H_
#define __COMPDATA_H_
#include "smlogres.h" // Resource symbols
#include "smlogcfg.h" // For CLSID_ComponentData
#include "Globals.h"
#include "common.h"
#include "smctrsv.h"
#include "smtracsv.h"
#include "smalrtsv.h"
#include "shfusion.h"
// result pane column indices
#define ROOT_COL_QUERY_NAME 0
#define ROOT_COL_QUERY_NAME_SIZE 80
#define ROOT_COL_COMMENT 1
#define ROOT_COL_COMMENT_SIZE 166
#define ROOT_COL_ALERT_COMMENT_XTRA 195
#define ROOT_COL_LOG_TYPE 2
#define ROOT_COL_LOG_TYPE_SIZE 75
#define ROOT_COL_LOG_NAME 3
#define ROOT_COL_LOG_NAME_SIZE 120
#define MAIN_COL_NAME 0
#define MAIN_COL_NAME_SIZE 120
#define MAIN_COL_DESC 1
#define MAIN_COL_DESC_SIZE 321
#define EXTENSION_COL_NAME 0
#define EXTENSION_COL_TYPE 1
#define EXTENSION_COL_DESC 2
class CSmLogQuery;
class CSmRootNode;
class CLogWarnd;
class ATL_NO_VTABLE CComponentData :
public CComObjectRootEx<CComSingleThreadModel>,
public IComponentData,
public IExtendContextMenu,
public IExtendPropertySheet,
public ISnapinHelp
// *** CComObjectRoot is from framewrk\stdcdata.h
//public CComObjectRoot
{
public:
CComponentData();
virtual ~CComponentData();
//DECLARE_REGISTRY_RESOURCEID(IDR_COMPONENTDATA)
//DECLARE_NOT_AGGREGATABLE(CComponentData)
enum eBitmapIndex {
eBmpQueryStarted = 0,
eBmpQueryStopped = 1,
eBmpLogType = 2,
eBmpRootIcon = 3,
eBmpAlertType = 4
};
enum eUpdateHint {
eSmHintNewQuery = 1,
eSmHintStartQuery = 2,
eSmHintStopQuery = 3,
eSmHintModifyQuery = 4
};
enum eNodeType {
eCounterLog = SLQ_COUNTER_LOG,
eTraceLog = SLQ_TRACE_LOG,
eAlert = SLQ_ALERT,
eMonitor = SLQ_LAST_LOG_TYPE + 1
};
BEGIN_COM_MAP(CComponentData)
COM_INTERFACE_ENTRY(IComponentData)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IExtendPropertySheet)
COM_INTERFACE_ENTRY(ISnapinHelp)
END_COM_MAP()
// IComponentData methods
public:
STDMETHOD(CompareObjects)(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
STDMETHOD(GetDisplayInfo)(LPSCOPEDATAITEM pItem);
STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT * ppDataObject);
STDMETHOD(Notify)(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
STDMETHOD(CreateComponent)(LPCOMPONENT * ppComponent);
STDMETHOD(Initialize)(LPUNKNOWN pUnknown);
STDMETHOD(Destroy)();
// IExtendPropertySheet methods
STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK pCall, LONG_PTR handle, LPDATAOBJECT pDataObject);
STDMETHOD(QueryPagesFor)(LPDATAOBJECT pDataObject);
// ISnapinHelp interface members
STDMETHOD(GetHelpTopic)(LPOLESTR* lpCompiledHelpFile);
// IExtendContextMenu
STDMETHOD(AddMenuItems)( LPDATAOBJECT pDataObject,
LPCONTEXTMENUCALLBACK pCallbackUnknown,
long *pInsertionAllowed
);
STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
// other helper methods
public:
BOOL IsLogService(MMC_COOKIE mmcCookie);
BOOL IsScopeNode(MMC_COOKIE mmcCookie);
BOOL IsAlertService (MMC_COOKIE mmcCookie);
BOOL IsLogQuery(MMC_COOKIE mmcCookie);
BOOL IsRunningQuery( CSmLogQuery* pQuery);
LPCTSTR GetConceptsHTMLHelpFileName ( void );
LPCTSTR GetSnapinHTMLHelpFileName ( void );
LPCTSTR GetHTMLHelpTopic ( void );
const CString& GetContextHelpFilePath ( void );
IPropertySheetProvider * GetPropSheetProvider();
BOOL LogTypeCheckNoMore (CLogWarnd* LogWarnd);
// *** NOTE: Use of extension subclass not implemented.
BOOL IsExtension(){ return m_bIsExtension; };
void HandleTraceConnectError( HRESULT&, CString&, CString& );
HRESULT CreateNewLogQuery( LPDATAOBJECT pDataObject, IPropertyBag* pPropBag = NULL);
HRESULT CreateLogQueryFrom(LPDATAOBJECT pDataObject);
// Methods to support IComponentData
private:
HRESULT OnExpand(LPDATAOBJECT lpDataObject, LPARAM arg, LPARAM param);
HRESULT OnRemoveChildren(LPDATAOBJECT lpDataObject, LPARAM arg, LPARAM param );
HRESULT ProcessCommandLine ( CString& rstrMachineName );
HRESULT LoadFromFile ( LPTSTR pszFileName );
LPRESULTDATA GetResultData ( void );
void SetExtension( BOOL bExt ){ m_bIsExtension = bExt; };
BOOL IsMyComputerNodetype (GUID& refguid);
HRESULT InitPropertySheet ( CSmLogQuery*, MMC_COOKIE, LONG_PTR, CPropertySheet& );
HRESULT NewTypedQuery( CSmLogService* pSvc, IPropertyBag* pPropBag ,LPDATAOBJECT pDataObject);
CString m_strServerNamePersist;
// *** override not implemented
BOOL m_fAllowOverrideMachineName; // TRUE => Allow the machine name to be overriden by the command line
LPCONSOLENAMESPACE m_ipConsoleNameSpace; // Pointer name space interface
LPCONSOLE m_ipConsole; // Pointer to the console interface
LPRESULTDATA m_ipResultData; // Pointer to the result data interface
LPIMAGELIST m_ipScopeImage; // Caching the image list
HINSTANCE m_hModule; // for load string operations
IPropertySheetProvider *m_ipPrshtProvider;// from MMC
// list of root nodes
CTypedPtrList<CPtrList, CSmRootNode*> m_listpRootNode;
CString m_strDisplayInfoName;
BOOL m_bIsExtension;
CString m_strWindowsDirectory;
CString m_strContextHelpFilePath;
};
//+--------------------------------------------------------------------------
//
// Member: CComponentData::GetPropSheetProvider
//
// Synopsis: Access function for saved MMC IPropertySheetProvider
// interface.
//
// History: 05-28-1999 a-akamal
//
//---------------------------------------------------------------------------
inline IPropertySheetProvider *
CComponentData::GetPropSheetProvider()
{
return m_ipPrshtProvider;
}
/////////////////////////////////////////////////////////////////////
class CSmLogSnapin: public CComponentData,
public CComCoClass<CSmLogSnapin, &CLSID_ComponentData>
{
public:
CSmLogSnapin() : CComponentData () {};
virtual ~CSmLogSnapin() {};
DECLARE_REGISTRY_RESOURCEID(IDR_COMPONENTDATA)
DECLARE_NOT_AGGREGATABLE(CSmLogSnapin)
virtual BOOL IsExtension() { return FALSE; }
// IPersistStream or IPersistStorage
STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID)
{
*pClassID = CLSID_ComponentData;
return S_OK;
}
};
/////////////////////////////////////////////////////////////////////
class CSmLogExtension: public CComponentData,
public CComCoClass<CSmLogExtension, &CLSID_ComponentData>
{
public:
CSmLogExtension() : CComponentData () {};
virtual ~CSmLogExtension() {};
DECLARE_REGISTRY_RESOURCEID(IDR_EXTENSION)
DECLARE_NOT_AGGREGATABLE(CSmLogExtension)
virtual BOOL IsExtension() { return TRUE; }
// IPersistStream or IPersistStorage
STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID)
{
*pClassID = CLSID_ComponentData;
return S_OK;
}
};
class CThemeContextActivator
{
public:
CThemeContextActivator() : m_ulActivationCookie(0)
{ SHActivateContext (&m_ulActivationCookie); }
~CThemeContextActivator()
{ SHDeactivateContext (m_ulActivationCookie); }
private:
ULONG_PTR m_ulActivationCookie;
};
#endif //__COMPDATA_H_