ICertManageModule::GetProperty 方法 (certmod.h)
GetProperty 方法检索模块的属性值。
语法
HRESULT GetProperty(
[in] const BSTR strConfig,
[in] BSTR strStorageLocation,
[in] BSTR strPropertyName,
[in] LONG Flags,
[out, retval] VARIANT *pvarProperty
);
参数
[in] strConfig
表示证书服务服务器的配置字符串,格式为 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是证书服务服务器的网络名称,CANAME 是 证书颁发机构 (CA) 的公用名称,如证书服务设置期间为 CA 输入。 有关配置字符串名称的信息,请参阅 ICertConfig。
[in] strStorageLocation
一个注册表项,表示属性值 HKEY_LOCAL_MACHINE 配置单元中的存储位置。 此值采用以下形式:
SYSTEM CurrentControlSet Services CertSvc Configuration CAName PolicyOrExitModules MyModule.PolicyOrExit
CAName 是证书颁发机构的配置字符串的名称,PolicyOrExitModules 将是“Policy”或“Exit” (具体取决于策略或退出模块是否适用于 ICertManageModule) 的此实现,而 MyModule.PolicyOrExit 是模块的应用程序特定标识符。 请注意, CAName 是证书颁发机构的 净化名称 。 有关清理后的名称的信息,请参阅 ICertConfig::GetConfig。 此存储位置的用途供将来使用。
[in] strPropertyName
正在查询的属性的名称。 策略和退出模块应支持以下属性。
值 | 含义 |
---|---|
|
模块的名称。 |
|
模块的说明。 |
|
与模块相关的版权。 |
|
模块文件的版本。 |
|
模块的版本。 |
[in] Flags
此参数是保留的,必须设置为零。
[out, retval] pvarProperty
指向 VARIANT 的指针,该变量是 strPropertyName 指定的属性的检索值。
返回值
C++
如果方法成功,该方法将返回S_OK。如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
VB
返回值是一个 Variant 类型的 值,它表示名为 strPropertyName 的属性的值。注解
实现 ICertManageModule 允许证书服务管理器通过调用 GetProperty 检索模块的属性。 然后,可以在策略和退出模块的证书服务管理器属性页中显示这些属性。 证书服务管理器会将 strStorageLocation 引用的位置传递给此模块,在将来的版本中,此方法的实现可根据需要使用此位置。 以下示例不使用 strStorageLocation ,而是在内存中维护属性值。
示例
#include <windows.h>
#include <Certmod.h>
HRESULT CCertManagePolicyModule::GetProperty(
/* [in] */ const BSTR strConfig,
/* [in] */ BSTR strStorageLocation,
/* [in] */ BSTR strPropertyName,
/* [in] */ LONG Flags,
/* [retval][out] */ VARIANT *pvarProperty)
{
// Array of property Names.
// These values are defined in Certmod.h.
wchar_t const * awszPropName[] =
{
wszCMM_PROP_NAME,
wszCMM_PROP_DESCRIPTION,
wszCMM_PROP_COPYRIGHT,
wszCMM_PROP_FILEVER,
wszCMM_PROP_PRODUCTVER
};
// Array of property Values.
// These values are module-specific, and
// correspond to the property names in
// awszPropName (same index).
wchar_t const * awszPropValue[] =
{
L"MyModule", // NAME
L"Description of MyModule", // DESCRIPTION
L"Copyright 1998", // COPYRIGHT
L"1.0", // FILE VERSION
L"1.0" // PRODUCT VERSION
};
int i;
bool bFound = FALSE;
HRESULT hr;
// Return appropriate error if strPropertyName is NULL.
if (NULL == strPropertyName)
return E_INVALIDARG;
// Return appropriate error if pvarProperty is NULL.
if (NULL == pvarProperty)
return E_POINTER;
// Determine whether the requested property is in the Name array.
for (i=0; i<sizeof(awszPropName)/sizeof(wchar_t *); i++)
if (!wcscmp( strPropertyName, awszPropName[i]))
{
bFound = TRUE; // Found the index for the property.
break;
}
if ( !bFound )
return S_FALSE; // Requested property not found.
// Allocate storage for the property value.
pvarProperty->bstrVal = SysAllocString(awszPropValue[i]);
if (NULL == pvarProperty->bstrVal)
return E_OUTOFMEMORY;
pvarProperty->vt = VT_BSTR;
return S_OK;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | certmod.h (包括 Certsrv.h) |
Library | Certidl.lib |
另请参阅
CCertManageModule