134 lines
3.5 KiB
C++
134 lines
3.5 KiB
C++
//+--------------------------------------------------------------------------
|
|
//
|
|
// 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;
|
|
};
|