// This is a part of the Microsoft Management Console. // Copyright (C) Microsoft Corporation, 1995 - 1999 // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Management Console and related // electronic documentation provided with the interfaces. // Compdata.h : Declaration of the CComponentDataImpl #ifndef _COMPDATA_H_ #define _COMPDATA_H_ #include "resource.h" // main symbols #ifndef __mmc_h__ #include #endif class CFolder; // Note - This is the offset in my image list that represents the folder enum IMAGE_INDEXES { IMGINDEX_FOLDER = 0, IMGINDEX_FOLDER_OPEN, IMGINDEX_CERTTYPE, IMGINDEX_UNKNOWNCERT, }; // Event Values #define IDC_STOPSERVER 0x100 #define IDC_STARTSERVER 0x101 #ifdef DBX void DbxPrint(LPTSTR pszFmt, ...) { va_list va; va_start (va, pszFmt); TCHAR buf[250]; wsprintf(buf, pszFmt, va); OutputDebugString(buf); va_end(va); } //#define DBX_PRINT DbxPrint inline void __DummyTrace(LPTSTR, ...) { } #define DBX_PRINT 1 ? (void)0 : ::__DummyTrace #else inline void __DummyTrace(LPTSTR, ...) { } #define DBX_PRINT 1 ? (void)0 : ::__DummyTrace #endif #define HTMLHELP_FILENAME L"cs.chm" #define HTMLHELP_COLLECTION_FILENAME L"\\help\\" HTMLHELP_FILENAME #define HTMLHELP_COLLECTIONLINK_FILENAME L"\\help\\csconcepts.chm" #define SZ_VERB_OPEN L"open" #define SZ_CERTTMPL_MSC L"certtmpl.msc" CONTEXTMENUITEM menuItems[]; CONTEXTMENUITEM viewItems[]; extern bool g_fCurrentUserHasDSWriteAccess; class CComponentDataImpl: public IComponentData, public IExtendPropertySheet, public IExtendContextMenu, public IPersistStream, public CComObjectRoot, public ISnapinHelp2 { BEGIN_COM_MAP(CComponentDataImpl) COM_INTERFACE_ENTRY(IComponentData) COM_INTERFACE_ENTRY(IExtendPropertySheet) COM_INTERFACE_ENTRY(IExtendContextMenu) COM_INTERFACE_ENTRY(IPersistStream) COM_INTERFACE_ENTRY(ISnapinHelp2) END_COM_MAP() friend class CSnapin; friend class CDataObject; CComponentDataImpl(); ~CComponentDataImpl(); public: virtual const CLSID& GetCoClassID() = 0; virtual const BOOL IsPrimaryImpl() = 0; public: // ISnapinHelp2 interface members STDMETHOD(GetHelpTopic)(LPOLESTR* lpCompiledHelpFile); STDMETHOD(GetLinkedTopics)(LPOLESTR* lpCompiledHelpFiles); // IComponentData interface members STDMETHOD(Initialize)(LPUNKNOWN pUnknown); STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent); STDMETHOD(Notify)(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param); STDMETHOD(Destroy)(); STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject); STDMETHOD(GetDisplayInfo)(SCOPEDATAITEM* pScopeDataItem); STDMETHOD(CompareObjects)(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB); // IExtendPropertySheet interface public: STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT lpIDataObject); STDMETHOD(QueryPagesFor)(LPDATAOBJECT lpDataObject); // IExtendContextMenu public: STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pCallbackUnknown, long *pInsertionAllowed); STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject); public: // IPersistStream interface members //STDMETHOD(GetClassID)(CLSID *pClassID); STDMETHOD(IsDirty)(); STDMETHOD(Load)(IStream *pStm); STDMETHOD(Save)(IStream *pStm, BOOL fClearDirty); STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize); #if DBG bool m_bInitializedCD; bool m_bLoadedCD; bool m_bDestroyedCD; #endif // Notify handler declarations private: HRESULT OnDelete(MMC_COOKIE cookie); HRESULT OnRemoveChildren(LPARAM arg); HRESULT OnRename(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnExpand(LPDATAOBJECT lpDataObject, LPARAM arg, LPARAM param); HRESULT OnSelect(MMC_COOKIE cookie, LPARAM arg, LPARAM param); HRESULT OnProperties(LPARAM param); #if DBG==1 public: ULONG InternalAddRef() { return CComObjectRoot::InternalAddRef(); } ULONG InternalRelease() { return CComObjectRoot::InternalRelease(); } #endif // DBG==1 // Scope item creation helpers private: CFolder* FindObject(MMC_COOKIE cookie); void DeleteList(); BOOL IsScopePaneNode(LPDATAOBJECT lpDataObject); private: LPCONSOLENAMESPACE m_pScope; // My interface pointer to the scope pane LPCONSOLE2 m_pConsole; // My interface pointer to the console HSCOPEITEM m_pStaticRoot; BOOL m_bIsDirty; void SetDirty(BOOL b = TRUE) { m_bIsDirty = b; } void ClearDirty() { m_bIsDirty = FALSE; } BOOL ThisIsDirty() { return m_bIsDirty; } void AddScopeItemToResultPane(MMC_COOKIE cookie); //////// // persist enum { // Bit fields for m_dwFlagsPersist mskfAllowOverrideMachineName = 0x0001 }; DWORD m_dwFlagsPersist; // General-purpose flags to be persisted into .msc file BOOL m_fAllowOverrideMachineName; // TRUE => Allow the machine name to be overriden by the command line void SetPersistentFlags(DWORD dwFlags) { m_dwFlagsPersist = dwFlags; m_fAllowOverrideMachineName = (m_dwFlagsPersist & mskfAllowOverrideMachineName); } DWORD GetPersistentFlags() { if (m_fAllowOverrideMachineName) m_dwFlagsPersist |= mskfAllowOverrideMachineName; else m_dwFlagsPersist &= ~mskfAllowOverrideMachineName; return m_dwFlagsPersist; } // end persist /////////////// HRESULT StartCertificateTemplatesSnapin(); public: HRESULT GetCreateFolderHRESULT() { return m_hrCreateFolder; }; private: CList m_scopeItemList; bool m_fAdvancedServer; HRESULT m_hrCreateFolder; #ifdef _DEBUG friend class CDataObject; int m_cDataObjects; #endif }; class CComponentDataPolicySettings : public CComponentDataImpl, public CComCoClass { public: DECLARE_REGISTRY(CSnapin, _T("Snapin.PolicySettings.1"), _T("Snapin.PolicySettings"), IDS_SNAPIN_DESC, THREADFLAGS_APARTMENT) virtual const CLSID & GetCoClassID() { return CLSID_CAPolicyExtensionSnapIn; } virtual const BOOL IsPrimaryImpl() { return TRUE; } STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID) { *pClassID = CLSID_CAPolicyExtensionSnapIn; return S_OK; } }; class CComponentDataGPEExtension : public CComponentDataImpl, public CComCoClass { public: // reid fix - IDS_SNAPIN_DESC is not right here DECLARE_REGISTRY(CSnapin, _T("Snapin.CertTempMgr.1"), _T("Snapin.CertTempMgr"), IDS_SNAPIN_DESC, THREADFLAGS_APARTMENT) virtual const CLSID & GetCoClassID() { return CLSID_CACertificateTemplateManager; } virtual const BOOL IsPrimaryImpl() { return TRUE; } STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID) { *pClassID = CLSID_CACertificateTemplateManager; return S_OK; } }; #endif // #define _COMPDATA_H_