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

ICertConfig

ICertManageModule

ICertManageModule::SetProperty