Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

296 lines
8.6 KiB

  1. // This is a part of the Microsoft Management Console.
  2. // Copyright (C) Microsoft Corporation, 1995 - 1999
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Management Console and related
  7. // electronic documentation provided with the interfaces.
  8. // Compdata.h : Declaration of the CComponentDataImpl
  9. #ifndef _COMPDATA_H_
  10. #define _COMPDATA_H_
  11. #include "resource.h" // main symbols
  12. #ifndef __mmc_h__
  13. #include <mmc.h>
  14. #endif
  15. class CFolder;
  16. /////////////////////////////
  17. // File Versions
  18. // current version
  19. // VER_CCOMPDATA_SAVE_STREAM_3 includes dwFlags,
  20. // m_cLastKnownSchema, m_rgLastKnownSchema
  21. #define VER_CCOMPDATA_SAVE_STREAM_3 0x003
  22. // version written through Win2000 beta 3
  23. #define VER_CCOMPDATA_SAVE_STREAM_2 0x002
  24. /////////////////////////////
  25. // CCompDataImpl dwFlags
  26. #define WSZ_MACHINE_OVERRIDE_SWITCH L"/MACHINE:"
  27. #define CERTMMC_PROPERTY_CHANGE_REFRESHVIEWS 0x200
  28. // Note - This is the offset in my image list that represents the folder
  29. enum IMAGE_INDEXES
  30. {
  31. IMGINDEX_FOLDER = 0,
  32. IMGINDEX_FOLDER_OPEN,
  33. IMGINDEX_CRL,
  34. IMGINDEX_CERT,
  35. IMGINDEX_PENDING_CERT,
  36. IMGINDEX_CERTSVR,
  37. IMGINDEX_CERTSVR_RUNNING,
  38. IMGINDEX_CERTSVR_STOPPED,
  39. IMGINDEX_NO_IMAGE,
  40. };
  41. // Event Values
  42. #define IDC_STOPSERVER 0x100
  43. #define IDC_STARTSERVER 0x101
  44. #define IDC_PUBLISHCRL 0x110
  45. #define IDC_REVOKECERT 0x112
  46. #define IDC_RESUBMITREQUEST 0x113
  47. #define IDC_DENYREQUEST 0x114
  48. #define IDC_BACKUP_CA 0x115
  49. #define IDC_RESTORE_CA 0x116
  50. #define IDC_INSTALL_CA 0x117
  51. #define IDC_REQUEST_CA 0x118
  52. #define IDC_ROLLOVER_CA 0x119
  53. #define IDC_SUBMITREQUEST 0x11a
  54. #define IDC_VIEW_CERT_PROPERTIES 0x140
  55. #define IDC_VIEW_ALLRECORDS 0x141
  56. #define IDC_VIEW_FILTER 0x142
  57. #define IDC_VIEW_ATTR_EXT 0x143
  58. #define IDC_RETARGET_SNAPIN 0x150
  59. #define IDC_UNREVOKE_CERT 0x160
  60. #define HTMLHELP_FILENAME L"cs.chm"
  61. #define HTMLHELP_COLLECTION_FILENAME L"\\help\\" HTMLHELP_FILENAME
  62. #define HTMLHELP_COLLECTIONLINK_FILENAME L"\\help\\csconcepts.chm"
  63. #define MFS_HIDDEN 0xFFFFFFFF
  64. #define MAX_RESOURCE_STRLEN 256
  65. typedef struct _MY_CONTEXTMENUITEM
  66. {
  67. CONTEXTMENUITEM item;
  68. UINT uiString1;
  69. UINT uiString2;
  70. DWORD dwRoles;
  71. WCHAR szString1[MAX_RESOURCE_STRLEN];
  72. WCHAR szString2[MAX_RESOURCE_STRLEN];
  73. } MY_CONTEXTMENUITEM, *PMY_CONTEXTMENUITEM;
  74. #define TASKITEM_FLAG_RESULTITEM 0x1
  75. #define TASKITEM_FLAG_LOCALONLY 0x2
  76. typedef struct _TASKITEM
  77. {
  78. FOLDER_TYPES type;
  79. DWORD dwFlags;
  80. MY_CONTEXTMENUITEM myitem;
  81. } TASKITEM;
  82. MY_CONTEXTMENUITEM menuItems[];
  83. MY_CONTEXTMENUITEM taskStartStop[];
  84. TASKITEM taskItems[];
  85. TASKITEM viewItems[];
  86. TASKITEM topItems[];
  87. // ICompData inserted
  88. TASKITEM taskResultItemsSingleSel[];
  89. MY_CONTEXTMENUITEM viewResultItems[];
  90. // m_dwPersistFlags
  91. #define CCOMPDATAIMPL_FLAGS_ALLOW_MACHINE_OVERRIDE 0x1
  92. class CComponentDataImpl:
  93. public IComponentData,
  94. public IExtendPropertySheet,
  95. public IExtendContextMenu,
  96. public IPersistStream,
  97. public CComObjectRoot,
  98. public ISnapinHelp2
  99. {
  100. BEGIN_COM_MAP(CComponentDataImpl)
  101. COM_INTERFACE_ENTRY(IComponentData)
  102. COM_INTERFACE_ENTRY(IExtendPropertySheet)
  103. COM_INTERFACE_ENTRY(IExtendContextMenu)
  104. COM_INTERFACE_ENTRY(IPersistStream)
  105. COM_INTERFACE_ENTRY(ISnapinHelp2)
  106. END_COM_MAP_X()
  107. public:
  108. friend class CSnapin;
  109. friend class CDataObject;
  110. CComponentDataImpl();
  111. virtual ~CComponentDataImpl();
  112. public:
  113. virtual const CLSID& GetCoClassID() = 0;
  114. virtual const BOOL IsPrimaryImpl() = 0;
  115. public:
  116. // ISnapinHelp2 interface members
  117. STDMETHOD(GetHelpTopic)(LPOLESTR* lpCompiledHelpFile);
  118. STDMETHOD(GetLinkedTopics)(LPOLESTR* lpCompiledHelpFiles);
  119. // IComponentData interface members
  120. STDMETHOD(Initialize)(LPUNKNOWN pUnknown);
  121. STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent);
  122. STDMETHOD(Notify)(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
  123. STDMETHOD(Destroy)();
  124. STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject);
  125. STDMETHOD(GetDisplayInfo)(SCOPEDATAITEM* pScopeDataItem);
  126. STDMETHOD(CompareObjects)(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
  127. // IExtendPropertySheet interface
  128. public:
  129. STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider,
  130. LONG_PTR handle,
  131. LPDATAOBJECT lpIDataObject);
  132. STDMETHOD(QueryPagesFor)(LPDATAOBJECT lpDataObject);
  133. // IExtendContextMenu
  134. public:
  135. STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pCallbackUnknown,
  136. LONG *pInsertionAllowed);
  137. STDMETHOD(Command)(LONG nCommandID, LPDATAOBJECT pDataObject);
  138. public:
  139. // IPersistStream interface members
  140. STDMETHOD(GetClassID)(CLSID *pClassID);
  141. STDMETHOD(IsDirty)();
  142. STDMETHOD(Load)(IStream *pStm);
  143. STDMETHOD(Save)(IStream *pStm, BOOL fClearDirty);
  144. STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize);
  145. #if DBG
  146. bool m_bInitializedCD;
  147. bool m_bLoadedCD;
  148. bool m_bDestroyedCD;
  149. #endif
  150. // Notify handler declarations
  151. private:
  152. HRESULT OnDelete(MMC_COOKIE cookie);
  153. HRESULT OnRemoveChildren(LPARAM arg);
  154. HRESULT OnRename(MMC_COOKIE cookie, LPARAM arg, LPARAM param);
  155. HRESULT OnExpand(LPDATAOBJECT lpDataObject, LPARAM arg, LPARAM param);
  156. HRESULT OnProperties(LPARAM param);
  157. public:
  158. STDMETHOD_(ULONG, AddRef) ();
  159. STDMETHOD_(ULONG, Release) ();
  160. LONG _cRefs;
  161. // Scope item creation helpers
  162. private:
  163. BOOL AddStartStopTasks(
  164. CFolder *pFolder,
  165. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  166. BOOL fSvcRunning);
  167. void UpdateScopeIcons();
  168. HRESULT DisplayProperRootNodeName(HSCOPEITEM hScopeItem);
  169. private:
  170. CFolder* FindObject(MMC_COOKIE cookie);
  171. // display synchronization code
  172. HRESULT SynchDisplayedCAList(LPDATAOBJECT lpDataObject);
  173. HRESULT BaseFolderInsertIntoScope(CFolder* pFolder, CertSvrCA* pCA);
  174. HRESULT CreateTemplateFolders(CertSvrCA* pCA);
  175. void EnumerateScopePane(LPDATAOBJECT lpDataObject, HSCOPEITEM pParent);
  176. BOOL IsScopePaneNode(LPDATAOBJECT lpDataObject);
  177. private:
  178. LPCONSOLENAMESPACE2 m_pScope; // My interface pointer to the scope pane
  179. LPCONSOLE2 m_pConsole; // My interface pointer to the console
  180. HSCOPEITEM m_pStaticRoot;
  181. DWORD m_dwNextViewIndex; // assign to CComponent to keep them seperate
  182. BOOL m_bIsDirty;
  183. void SetDirty(BOOL b = TRUE) { m_bIsDirty = b; }
  184. void ClearDirty() { m_bIsDirty = FALSE; }
  185. BOOL ThisIsDirty() { return m_bIsDirty; }
  186. ////////
  187. // persist
  188. // General-purpose flags to be persisted into .msc file
  189. DWORD m_dwFlagsPersist;
  190. CertSvrMachine* m_pCertMachine;
  191. CFolder* m_pCurSelFolder;
  192. GUID m_guidInstance; // keeps column data straight -- new id for each instance
  193. DWORD m_cLastKnownSchema;
  194. CString* m_rgcstrLastKnownSchema;
  195. // end persist
  196. ///////////////
  197. // non-persistent schema info
  198. LONG* m_rgltypeLastKnownSchema;
  199. BOOL* m_rgfindexedLastKnownSchema;
  200. BOOL m_fSchemaWasResolved; // only resolve once
  201. BOOL m_fCertView;
  202. public:
  203. int FindColIdx(IN LPCWSTR szHeading);
  204. DWORD GetSchemaEntries() { return m_cLastKnownSchema; }
  205. HRESULT GetDBSchemaEntry(int iIndex, LPCWSTR* pszHeading, LONG* plType, BOOL* pfIndexed);
  206. HRESULT SetDBSchema(CString* rgcstr, LONG* rgtype, BOOL* rgfIndexed, DWORD cEntries);
  207. void ResetPersistedColumnInformation()
  208. {
  209. HRESULT hr = UuidCreate(&m_guidInstance);
  210. UNREFERENCED_PARAMETER(hr);
  211. }
  212. private:
  213. CList<CFolder*, CFolder*> m_scopeItemList;
  214. BOOL m_fScopeAlreadyEnumerated;
  215. };
  216. class CComponentDataPrimaryImpl : public CComponentDataImpl,
  217. public CComCoClass<CComponentDataPrimaryImpl, &CLSID_Snapin>
  218. {
  219. public:
  220. DECLARE_REGISTRY(CSnapin, _T("CertSvrAdmin Snapin.Snapin.1"), _T("CertSvrAdmin Snapin.Snapin"), IDS_SNAPIN_DESC, THREADFLAGS_APARTMENT)
  221. virtual const CLSID & GetCoClassID() { return CLSID_Snapin; }
  222. virtual const BOOL IsPrimaryImpl() { return TRUE; }
  223. };
  224. #endif // #define _COMPDATA_H_