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

181 lines
5.5 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997-2001.
//
// File: cmponent.h
//
// Contents: CCertTmplComponent
//
//----------------------------------------------------------------------------
// cmponent.h : Declaration of CCertTmplComponent
#ifndef __CMPONENT_H_INCLUDED__
#define __CMPONENT_H_INCLUDED__
#include "cookie.h" // CCertTmplCookie
#include "CertTemplate.h" // CCertTemplate
#define UPDATE_HINT_ENUM_CERT_TEMPLATES 0x01
enum {
IDM_CLONE_TEMPLATE = 101,
IDM_REENROLL_ALL_CERTS,
IDM_VIEW_OIDS
};
// forward declarations
class CCertTmplComponentData;
class CCertTmplComponent :
public CComponent,
public IExtendContextMenu,
public ICertTemplatesSnapin,
public IExtendPropertySheet,
public IResultDataCompareEx,
public PersistStream
{
public:
CCertTmplComponent();
virtual ~CCertTmplComponent();
BEGIN_COM_MAP(CCertTmplComponent)
COM_INTERFACE_ENTRY(ICertTemplatesSnapin)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IExtendPropertySheet)
COM_INTERFACE_ENTRY(IResultDataCompareEx)
COM_INTERFACE_ENTRY(IPersistStream)
COM_INTERFACE_ENTRY_CHAIN(CComponent)
END_COM_MAP()
#if DBG==1
ULONG InternalAddRef()
{
return CComObjectRoot::InternalAddRef();
}
ULONG InternalRelease()
{
return CComObjectRoot::InternalRelease();
}
int dbg_InstID;
#endif // DBG==1
// IExtendContextMenu
public:
STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject,
LPCONTEXTMENUCALLBACK pCallbackUnknown,
long *pInsertionAllowed);
STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
// IResultDataCompareEx
STDMETHOD(Compare)(RDCOMPARE* prdc, int* pnResult);
// IComponent implemented in CComponent
// support methods for IComponent
virtual HRESULT ReleaseAll();
virtual HRESULT OnPropertyChange( LPARAM param );
virtual HRESULT OnViewChange (LPDATAOBJECT pDataObject, LPARAM data, LPARAM hint);
virtual HRESULT Show(CCookie* pcookie, LPARAM arg, HSCOPEITEM hScopeItem, LPDATAOBJECT pDataObject);
virtual HRESULT Show(CCookie* pcookie, LPARAM arg, HSCOPEITEM hScopeItem);
virtual HRESULT OnNotifyAddImages( LPDATAOBJECT pDataObject,
LPIMAGELIST lpImageList,
HSCOPEITEM hSelectedItem );
virtual HRESULT OnNotifyColumnClick (LPDATAOBJECT pDataObject,
LPARAM iColumn,
LPARAM uFlags);
HRESULT PopulateListbox(CCertTmplCookie* pcookie);
HRESULT RefreshResultPane(const bool bSilent);
static HRESULT LoadStrings();
HRESULT LoadColumns( CCertTmplCookie* pcookie );
CCertTmplComponentData& QueryComponentDataRef()
{
return (CCertTmplComponentData&)QueryBaseComponentDataRef();
}
public:
STDMETHOD(GetDisplayInfo)(RESULTDATAITEM* pResultDataItem);
CCertTmplCookie* m_pViewedCookie; // CODEWORK I hate to have to do this...
inline CCertTmplCookie* ActiveCookie( CCookie* pBaseCookie )
{
return (CCertTmplCookie*)ActiveBaseCookie( pBaseCookie );
}
// IExtendPropertySheet
STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK pCall, LONG_PTR handle, LPDATAOBJECT pDataObject);
STDMETHOD(QueryPagesFor)(LPDATAOBJECT pDataObject);
// PersistStream
HRESULT STDMETHODCALLTYPE Load(IStream __RPC_FAR *pStg);
HRESULT STDMETHODCALLTYPE Save(IStream __RPC_FAR *pStgSave, BOOL fSameAsLoad);
private:
CertTmplObjectType m_currResultNodeType;
CString m_szDisplayInfoResult;
UINT* m_ColumnWidths[CERTTMPL_NUMTYPES];
void SetTextNotAvailable ();
protected:
virtual HRESULT OnNotifyRename(
LPDATAOBJECT lpDataObject,
LPARAM arg,
LPARAM param);
HRESULT EnumerateTemplates (IDirectoryObject* pTemplateContObj,
const BSTR bszTemplateContainerPath);
HRESULT AddEnterpriseTemplates ();
HRESULT DeleteCertTemplateFromResultPane (
CCertTemplate* pCertTemplate,
LPDATAOBJECT pDataObject);
HRESULT DeleteCookie (
CCertTmplCookie* pCookie,
LPDATAOBJECT pDataObject,
bool bRequestConfirmation,
bool bIsMultipleSelect);
HRESULT RefreshResultItem (CCertTmplCookie* pCookie);
CCertTmplCookie* ConvertCookie (LPDATAOBJECT pDataObject);
HRESULT OnNotifyCutOrMove (LPARAM arg);
HRESULT SaveWidths (CCertTmplCookie* pCookie);
HRESULT LoadColumnsFromArrays (CertTmplObjectType objecttype);
STDMETHOD(Initialize)(LPCONSOLE lpConsole);
STDMETHOD(GetResultViewType)(MMC_COOKIE cookie, BSTR* ppViewType, long* pViewOptions);
HRESULT OnNotifyQueryPaste (LPDATAOBJECT pDataObject, LPARAM arg, LPARAM param);
HRESULT OnNotifyPaste (LPDATAOBJECT pDataObject, LPARAM arg, LPARAM param);
void DisplayAccessDenied();
STDMETHOD(Notify)(LPDATAOBJECT pDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
virtual HRESULT OnNotifyDelete (LPDATAOBJECT pDataObject);
virtual HRESULT OnNotifyRefresh (LPDATAOBJECT pDataObject);
virtual HRESULT OnNotifySelect( LPDATAOBJECT pDataObject, BOOL fSelected);
virtual HRESULT OnNotifySnapinHelp (LPDATAOBJECT pDataObject);
virtual HRESULT OnNotifyDblClick( LPDATAOBJECT pDataObject );
}; // class CCertTmplComponent
// Enumeration for the icons used
enum
{
iIconDefault = 0,
iIconCertTemplateV1,
iIconCertTemplateV2,
iIconLast // Must be last
};
typedef enum _COLNUM_CERT_TEMPLATES {
COLNUM_CERT_TEMPLATE_OBJECT = 0,
COLNUM_CERT_TEMPLATE_TYPE,
COLNUM_CERT_TEMPLATE_VERSION,
COLNUM_CERT_TEMPLATE_AUTOENROLL_STATUS,
CERT_TEMPLATES_NUM_COLS // always last
} COLNUM_CERT_TEMPLATES;
#endif // ~__CMPONENT_H_INCLUDED__