|
|
//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: view.h
//
// Contents: Declaration of CCertView
//
//---------------------------------------------------------------------------
#include "certsrvd.h"
#include "cscomres.h"
HRESULT CopyMarshalledString( IN CERTTRANSBLOB const *pctb, IN ULONG obwsz, IN BYTE *pbEnd, IN BYTE **ppbNext, OUT WCHAR **ppwszOut);
#define ICVTABLE_REQCERT 0
#define ICVTABLE_EXTENSION 1
#define ICVTABLE_ATTRIBUTE 2
#define ICVTABLE_CRL 3
#define ICVTABLE_MAX 4
/////////////////////////////////////////////////////////////////////////////
// CCertView
class ATL_NO_VTABLE CCertView: public IDispatchImpl<ICertView2, &IID_ICertView2, &LIBID_CERTADMINLib>, public ISupportErrorInfoImpl<&IID_ICertView2>, public CComObjectRoot, public CComCoClass<CCertView, &CLSID_CCertView> { public: CCertView(); ~CCertView();
BEGIN_COM_MAP(CCertView) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(ICertView) COM_INTERFACE_ENTRY(ICertView2) END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CCertView) // Remove the comment from the line above if you don't want your object to
// support aggregation. The default is to support it
#if 1
DECLARE_REGISTRY( CCertView, wszCLASS_CERTVIEW TEXT(".1"), wszCLASS_CERTVIEW, IDS_CERTVIEW_DESC, THREADFLAGS_BOTH) #endif
// ICertView
STDMETHOD(OpenConnection)( /* [in] */ BSTR const strConfig);
STDMETHOD(EnumCertViewColumn)( /* [in] */ LONG fResultColumn, // CVRC_COLUMN_*
/* [out, retval] */ IEnumCERTVIEWCOLUMN **ppenum);
STDMETHOD(GetColumnCount)( /* [in] */ LONG fResultColumn, // CVRC_COLUMN_*
/* [out, retval] */ LONG __RPC_FAR *pcColumn);
STDMETHOD(GetColumnIndex)( /* [in] */ LONG fResultColumn, // CVRC_COLUMN_*
/* [in] */ BSTR const strColumnName, /* [out, retval] */ LONG *pColumnIndex);
STDMETHOD(SetResultColumnCount)( /* [in] */ LONG cColumn);
STDMETHOD(SetResultColumn)( /* [in] */ LONG ColumnIndex);
STDMETHOD(SetRestriction)( /* [in] */ LONG ColumnIndex, /* [in] */ LONG SeekOperator, /* [in] */ LONG SortOrder, /* [in] */ VARIANT __RPC_FAR const *pvarValue);
STDMETHOD(OpenView)( /* [out] */ IEnumCERTVIEWROW **ppenum);
// ICertView2
STDMETHOD(SetTable)( /* [in] */ LONG Table); // CVRC_TABLE_*
// CCertView
HRESULT GetTable( OUT LONG *pcvrcTable);
HRESULT FindColumn( IN LONG Flags, // CVRC_TABLE_* | CVRC_COLUMN_*
IN LONG ColumnIndex, OUT CERTDBCOLUMN const **ppColumn, OPTIONAL OUT WCHAR const **ppwszDisplayName);
HRESULT SetViewColumns( OUT LONG *pcbrowResultNominal);
HRESULT EnumView( IN LONG cskip, IN ULONG celt, OUT ULONG *pceltFetched, OUT LONG *pieltNext, OUT LONG *pcbResultRows, OUT CERTTRANSDBRESULTROW const **ppResultRows);
HRESULT EnumAttributesOrExtensions( IN DWORD RowId, IN DWORD Flags, OPTIONAL IN WCHAR const *pwszLast, IN DWORD celt, OUT DWORD *pceltFetched, CERTTRANSBLOB *pctbOut);
// Internal Functions
private: VOID _Cleanup();
HRESULT _VerifyServerVersion( IN DWORD RequiredVersion);
HRESULT _SaveColumnInfo( IN LONG icvTable, IN DWORD celt, IN CERTTRANSBLOB const *pctbColumn);
HRESULT _LoadSchema( IN LONG icvTable, IN LONG cvrcTable);
HRESULT _ValidateFlags( IN BOOL fSchemaOnly, IN DWORD Flags);
HRESULT _SetTable( IN LONG Table); // CVRC_TABLE_* or CV_COLUMN_*_DEFAULT
HRESULT _SetErrorInfo( IN HRESULT hrError, IN WCHAR const *pwszDescription);
WCHAR *m_pwszServerName; DWORD m_dwServerVersion; ICertAdminD2 *m_pICertAdminD;
CERTDBCOLUMN **m_aaaColumn[ICVTABLE_MAX]; DWORD m_acaColumn[ICVTABLE_MAX]; LONG m_acColumn[ICVTABLE_MAX];
CERTVIEWRESTRICTION *m_aRestriction; LONG m_cRestriction; BOOL m_fTableSet; LONG m_icvTable; // ICVTABLE_*
LONG m_cvrcTable; // CVRC_TABLE_*
BOOL m_fAddOk; LONG m_cColumnResultMax; LONG m_cColumnResult; LONG m_cbcolResultNominalTotal;
LONG *m_aColumnResult; // Exposed 0-based Column Index array
DWORD *m_aDBColumnResult; // Server DB Column Index array
WCHAR *m_pwszAuthority; BOOL m_fOpenConnection; BOOL m_fOpenView; BOOL m_fServerOpenView; LONG m_ielt; WCHAR const **m_aapwszColumnDisplayName[ICVTABLE_MAX]; };
|