//+-------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: request.h // // Contents: Implementation of DCOM object for RPC services // // History: July-97 xtan created // //--------------------------------------------------------------------------- // class definition // Request Interface class CCertRequestD : public ICertRequestD2 { public: // IUnknown virtual STDMETHODIMP QueryInterface(const IID& iid, void** ppv); virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release(); // ICertRequestD virtual STDMETHODIMP Request( IN DWORD dwFlags, IN wchar_t const *pwszAuthority, IN OUT DWORD *pdwRequestId, OUT DWORD *pdwDisposition, IN wchar_t const *pwszAttributes, IN CERTTRANSBLOB const *pctbRequest, OUT CERTTRANSBLOB *pctbCertChain, OUT CERTTRANSBLOB *pctbEncodedCert, OUT CERTTRANSBLOB *pctbDispositionMessage); virtual STDMETHODIMP GetCACert( IN DWORD Flags, IN wchar_t const *pwszAuthority, OUT CERTTRANSBLOB *pctbOut); virtual STDMETHODIMP Ping( // test function wchar_t const *pwszAuthority); // ICertRequestD2 virtual STDMETHODIMP Request2( IN wchar_t const *pwszAuthority, IN DWORD dwFlags, IN wchar_t const *pwszSerialNumber, IN OUT DWORD *pdwRequestId, OUT DWORD *pdwDisposition, IN wchar_t const *pwszAttributes, IN CERTTRANSBLOB const *pctbRequest, OUT CERTTRANSBLOB *pctbFullResponse, OUT CERTTRANSBLOB *pctbEncodedCert, OUT CERTTRANSBLOB *pctbDispositionMessage); virtual STDMETHODIMP GetCAProperty( IN wchar_t const *pwszAuthority, IN LONG PropId, // CR_PROP_* IN LONG PropIndex, IN LONG PropType, // PROPTYPE_* OUT CERTTRANSBLOB *pctbPropertyValue); virtual STDMETHODIMP GetCAPropertyInfo( IN wchar_t const *pwszAuthority, OUT LONG *pcProperty, OUT CERTTRANSBLOB *pctbPropInfo); virtual STDMETHODIMP Ping2( IN wchar_t const *pwszAuthority); // CCertRequestD // Constructor CCertRequestD(); // Destructor ~CCertRequestD(); private: // this is a test function HRESULT _Ping( IN wchar_t const *pwszAuthority); HRESULT _Request( IN WCHAR const *pwszAuthority, IN DWORD dwFlags, OPTIONAL IN WCHAR const *pwszSerialNumber, IN DWORD dwRequestId, OPTIONAL IN WCHAR const *pwszAttributes, OPTIONAL IN CERTTRANSBLOB const *pctbRequest, OUT CERTSRV_RESULT_CONTEXT *pResult); private: // Reference count long m_cRef; }; // Class of Request factory class CRequestFactory : public IClassFactory { public: // IUnknown virtual STDMETHODIMP QueryInterface(const IID& iid, void **ppv); virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release(); // Interface IClassFactory virtual STDMETHODIMP CreateInstance( IUnknown *pUnknownOuter, const IID& iid, void **ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor CRequestFactory() : m_cRef(1) { } // Destructor ~CRequestFactory() { } public: static HRESULT CanUnloadNow(); static HRESULT StartFactory(); static void StopFactory(); private: long m_cRef; };