windows-nt/Source/XPSP1/NT/ds/security/services/ca/certsrv/request.h
2020-09-26 16:20:57 +08:00

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;
};