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

117 lines
3 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: crldist.h
//
//--------------------------------------------------------------------------
// crldist.h: Declaration of the CCertEncodeCRLDistInfo
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// certenc
#define wszCLASS_CERTENCODECRLDISTINFO wszCLASS_CERTENCODE TEXT("CRLDistInfo")
class CCertEncodeCRLDistInfo:
public IDispatchImpl<ICertEncodeCRLDistInfo, &IID_ICertEncodeCRLDistInfo, &LIBID_CERTENCODELib>,
public ISupportErrorInfoImpl<&IID_ICertEncodeCRLDistInfo>,
public CComObjectRoot,
public CComCoClass<CCertEncodeCRLDistInfo, &CLSID_CCertEncodeCRLDistInfo>
{
public:
CCertEncodeCRLDistInfo()
{
m_aValue = NULL;
m_DecodeInfo = NULL;
m_fConstructing = FALSE;
}
~CCertEncodeCRLDistInfo();
BEGIN_COM_MAP(CCertEncodeCRLDistInfo)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(ICertEncodeCRLDistInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CCertEncodeCRLDistInfo)
// Remove the comment from the line above if you don't want your object to
// support aggregation. The default is to support it
DECLARE_REGISTRY(
CCertEncodeCRLDistInfo,
wszCLASS_CERTENCODECRLDISTINFO TEXT(".1"),
wszCLASS_CERTENCODECRLDISTINFO,
IDS_CERTENCODECRLDIST_DESC,
THREADFLAGS_BOTH)
// ICertEncodeCRLDistInfo
public:
STDMETHOD(Decode)(
/* [in] */ BSTR const strBinary);
STDMETHOD(GetDistPointCount)(
/* [out, retval] */ LONG __RPC_FAR *pDistPointCount);
STDMETHOD(GetNameCount)(
/* [in] */ LONG DistPointIndex,
/* [out, retval] */ LONG __RPC_FAR *pNameCount);
STDMETHOD(GetNameChoice)(
/* [in] */ LONG DistPointIndex,
/* [in] */ LONG NameIndex,
/* [out, retval] */ LONG __RPC_FAR *pNameChoice);
STDMETHOD(GetName)(
/* [in] */ LONG DistPointIndex,
/* [in] */ LONG NameIndex,
/* [out, retval] */ BSTR __RPC_FAR *pstrName);
STDMETHOD(Reset)(
/* [in] */ LONG DistPointCount);
STDMETHOD(SetNameCount)(
/* [in] */ LONG DistPointIndex,
/* [in] */ LONG NameCount);
STDMETHOD(SetNameEntry)(
/* [in] */ LONG DistPointIndex,
/* [in] */ LONG NameIndex,
/* [in] */ LONG NameChoice,
/* [in] */ BSTR const strName);
STDMETHOD(Encode)(
/* [out, retval] */ BSTR *pstrBinary);
private:
VOID _Cleanup(VOID);
BOOL _VerifyNames(
IN LONG DistPointIndex);
HRESULT _MapDistPoint(
IN BOOL fEncode,
IN LONG DistPointIndex,
OUT LONG **ppNameCount,
OUT CERT_ALT_NAME_ENTRY ***ppaName);
HRESULT _MapName(
IN BOOL fEncode,
IN LONG DistPointIndex,
IN LONG NameIndex,
OUT CERT_ALT_NAME_ENTRY **ppName);
HRESULT _SetErrorInfo(
IN HRESULT hrError,
IN WCHAR const *pwszDescription);
CRL_DIST_POINT *m_aValue;
LONG m_cValue;
CRL_DIST_POINTS_INFO *m_DecodeInfo;
BOOL m_fConstructing;
};