|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: certif.cpp
//
//--------------------------------------------------------------------------
#include "stdafx.h"
#include "csprop.h"
#include "ciinit.h"
FNCIGETPROPERTY PropCIGetProperty; FNCISETPROPERTY PropCISetProperty; FNCIGETEXTENSION PropCIGetExtension; FNCISETPROPERTY PropCISetExtension; FNCIENUMSETUP PropCIEnumSetup; FNCIENUMNEXT PropCIEnumNext; FNCIENUMCLOSE PropCIEnumClose;
SERVERCALLBACKS ThunkedCallbacks = { PropCIGetProperty, // FNCIGETPROPERTY *pfnGetProperty;
PropCISetProperty, // FNCISETPROPERTY *pfnSetProperty;
PropCIGetExtension, // FNCIGETEXTENSION *pfnGetExtension;
PropCISetExtension, // FNCISETEXTENSION *pfnSetExtension;
PropCIEnumSetup, // FNCIENUMSETUP *pfnEnumSetup;
PropCIEnumNext, // FNCIENUMNEXT *pfnEnumNext;
PropCIEnumClose, // FNCIENUMCLOSE *pfnEnumClose;
};
CertSvrCA* g_pCA = NULL;
HRESULT ThunkServerCallbacks(CertSvrCA* pCA) { HRESULT hr = S_OK; static BOOL fInitialized = FALSE;
if (!fInitialized) { fInitialized = TRUE;
// initialize certif.dll
hr = CertificateInterfaceInit( &ThunkedCallbacks, sizeof(ThunkedCallbacks));
} g_pCA = pCA;
return hr; }
HRESULT PropCIGetProperty( IN LONG Context, IN DWORD Flags, IN WCHAR const *pwszPropertyName, OUT VARIANT *pvarPropertyValue) { HRESULT hr; if (NULL != pvarPropertyValue) { VariantInit(pvarPropertyValue); } if (NULL == pwszPropertyName || NULL == pvarPropertyValue) { hr = E_POINTER; _JumpError(hr, error, "NULL parm"); } hr = E_INVALIDARG; if ((PROPCALLER_MASK & Flags) != PROPCALLER_POLICY && (PROPCALLER_MASK & Flags) != PROPCALLER_EXIT) { _JumpError(hr, error, "Flags: Invalid caller"); } // Special, hard-coded properties we need to support
if (0 == lstrcmpi(pwszPropertyName, wszPROPCATYPE)) { ENUM_CATYPES caType = g_pCA->GetCAType(); hr = myUnmarshalVariant( Flags, sizeof(DWORD), (PBYTE)&caType, pvarPropertyValue); _JumpIfError(hr, error, "myUnmarshalVariant"); } else if (0 == lstrcmpi(pwszPropertyName, wszPROPUSEDS)) { BOOL fUseDS = g_pCA->FIsUsingDS(); hr = myUnmarshalVariant( Flags, sizeof(BOOL), (PBYTE)&fUseDS, pvarPropertyValue); _JumpIfError(hr, error, "myUnmarshalVariant"); } else { hr = CERTSRV_E_PROPERTY_EMPTY; }
error:
return(myHError(hr)); }
HRESULT PropCISetProperty( IN LONG Context, IN DWORD Flags, IN WCHAR const *pwszPropertyName, IN VARIANT const *pvarPropertyValue) { return E_NOTIMPL; }
HRESULT PropCIGetExtension( IN LONG Context, IN DWORD Flags, IN WCHAR const *pwszExtensionName, OUT DWORD *pdwExtFlags, OUT VARIANT *pvarValue) { return E_NOTIMPL; }
HRESULT PropCISetExtension( IN LONG Context, IN DWORD Flags, IN WCHAR const *pwszExtensionName, IN DWORD ExtFlags, IN VARIANT const *pvarValue) { return E_NOTIMPL; }
HRESULT PropCIEnumSetup( IN LONG Context, IN LONG Flags, IN OUT CIENUM *pciEnum) { return E_NOTIMPL; }
HRESULT PropCIEnumNext( IN OUT CIENUM *pciEnum, OUT BSTR *pstrPropertyName) { return E_NOTIMPL; }
HRESULT PropCIEnumClose( IN OUT CIENUM *pciEnum) { return E_NOTIMPL; }
|