//+-------------------------------------------------------------------------- // // 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, public ISupportErrorInfoImpl<&IID_ICertView2>, public CComObjectRoot, public CComCoClass { 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]; };