//+-------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: ext.h // // Contents: CertView implementation // //--------------------------------------------------------------------------- #define CEXT_CHUNK 20 class CEnumCERTVIEWEXTENSION: public IDispatchImpl< IEnumCERTVIEWEXTENSION, &IID_IEnumCERTVIEWEXTENSION, &LIBID_CERTADMINLib>, public ISupportErrorInfoImpl<&IID_IEnumCERTVIEWEXTENSION>, public CComObjectRoot // Not externally createable: //public CComCoClass { public: CEnumCERTVIEWEXTENSION(); ~CEnumCERTVIEWEXTENSION(); BEGIN_COM_MAP(CEnumCERTVIEWEXTENSION) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(IEnumCERTVIEWEXTENSION) END_COM_MAP() DECLARE_NOT_AGGREGATABLE(CEnumCERTVIEWEXTENSION) // Remove the comment from the line above if you don't want your object to // support aggregation. The default is to support it #if 0 // Not externally createable: DECLARE_REGISTRY( CEnumCERTVIEWEXTENSION, wszCLASS_EnumCERTVIEWEXTENSION TEXT(".1"), wszCLASS_EnumCERTVIEWEXTENSION, IDS_ENUMCERTVIEWEXTENSION_DESC, THREADFLAGS_BOTH) #endif // IUnknown STDMETHODIMP QueryInterface(const IID& iid, void **ppv); ULONG STDMETHODCALLTYPE AddRef(); ULONG STDMETHODCALLTYPE Release(); // IEnumCERTVIEWEXTENSION STDMETHOD(Next)( /* [out, retval] */ LONG *pIndex); STDMETHOD(GetName)( /* [out, retval] */ BSTR *pstrOut); STDMETHOD(GetFlags)( /* [out, retval] */ LONG *pFlags); STDMETHOD(GetValue)( /* [in] */ LONG Type, /* [in] */ LONG Flags, /* [out, retval] */ VARIANT *pvarValue); STDMETHOD(Skip)( /* [in] */ LONG celt); STDMETHOD(Reset)(VOID); STDMETHOD(Clone)( /* [out] */ IEnumCERTVIEWEXTENSION **ppenum); // CEnumCERTVIEWEXTENSION HRESULT Open( IN LONG RowId, IN LONG Flags, IN ICertView *pvw); private: HRESULT _FindExtension( OUT CERTDBEXTENSION const **ppcde); HRESULT _SaveExtensions( IN DWORD celt, IN CERTTRANSBLOB const *pctbExtensions); HRESULT _SetErrorInfo( IN HRESULT hrError, IN WCHAR const *pwszDescription); LONG m_RowId; LONG m_Flags; ICertView *m_pvw; LONG m_ielt; LONG m_ieltCurrent; LONG m_celtCurrent; CERTDBEXTENSION *m_aelt; BOOL m_fNoMore; BOOL m_fNoCurrentRecord; // Reference count long m_cRef; };