ICertServerExit::EnumerateExtensions 方法 (certif.h)

EnumerateExtensions 方法返回对象标识符 (OID) 字符串 (也称为要枚举的下一个证书扩展的扩展名称) ,然后递增指向以下扩展名的内部指针。

在调用 EnumerateExtensions 之前,应用程序调用 ICertServerExit::EnumerateExtensionsSetup。 枚举完成后,应用程序将调用 ICertServerExit::EnumerateExtensionsClose

语法

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

参数

[out] pstrExtensionName

指向枚举扩展名称的指针。

返回值

C++

如果该方法成功,该方法将返回S_OK,并且 *pstrExtensionName 设置为包含枚举扩展插件名称的 BSTR 。 如果已枚举最后一个扩展,则返回值 S_FALSE。

若要使用此方法,请创建 BSTR 类型的变量,将变量设置为 等于 NULL,并将此变量的地址作为 pstrExtensionName 传递。

使用完 BSTR 后,通过调用 SysFreeString 函数释放它。

如果方法失败,它将返回指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

VB

返回一个字符串,其中包含枚举扩展的名称;如果已枚举最后一个扩展名,则返回一个空字符串。

注解

此方法枚举数据库中记录的证书扩展,即使是那些已禁用且未显示在证书中的扩展。 若要确定是否禁用扩展,请使用 ICertServerExit::GetCertificateExtensionFlags 测试扩展的EXTENSION_DISABLE_FLAG位。

示例

BSTR     bstrExt = NULL;
VARIANT  varExt;
LONG     ExtFlags;
HRESULT  hr;

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerExit->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerExit->GetCertificateExtension(
                              bstrExt,
                              PROPTYPE_BINARY,
                              &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerExit->GetCertificateExtensionFlags(
                                &ExtFlags)))
        printf("Failed GetCertificateExtensionFlags\n");
    else
        // This sample will display the extension OID string,
        // the extension flags (in hex) and
        // the length of the BSTR binary ASN-encode extension.
        printf("Extension: %ws\tFlags:%x\tLength:%u\n",
               bstrExt,
               ExtFlags,
               SysStringByteLen(varExt.bstrVal));
  }
}
// Determine if hr was S_FALSE, meaning the enumeration 
// was completed, or some other error.
if (S_FALSE != hr)
    printf("Failed EnumerateExtensions - %x\n", hr);
// Free BSTR resource.
if (NULL != bstrExt)
    SysFreeString(bstrExt);
// Free VARIANT resource.
    VariantClear(&varExt);

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certif.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certcli.dll

另请参阅

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags