Поделиться через


Метод ICertServerPolicy::EnumerateExtensions (certif.h)

Метод EnumerateExtensions извлекает идентификатор объекта (OID) текущего расширения и перемещает внутренний указатель перечисления на следующее расширение.

Синтаксис

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Параметры

[out] pstrExtensionName

Указатель на объект BSTR , содержащий идентификатор объекта OID текущего расширения.

Возвращаемое значение

C++

Если метод завершается успешно, метод возвращает S_OK, а параметр pstrExtensionName содержит идентификатор идентификатора идентификатора текущего расширения. Если последнее расширение уже было перечислено, возвращается значение S_FALSE.

Чтобы использовать этот метод, создайте переменную типа BSTR , задайте для переменной значение NULL и передайте адрес этой переменной как pstrExtensionName.

Завершив использование BSTR, освободите его, вызвав функцию SysFreeString .

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращает строку, содержащую OID расширения, или пустую строку, если последнее расширение уже было перечислено.

Комментарии

Этот метод перечисляет расширения сертификатов, записанные в базе данных, даже те, которые отключены и не отображаются в сертификате. Чтобы определить, отключено ли расширение, используйте Командлет GetCertificateExtensionFlags для проверки EXTENSION_DISABLE_FLAG бит расширения.

Завершив перечисление, вызовите метод EnumerateExtensionsClose , чтобы освободить ресурсы, используемые вызовами перечисления.

Примеры

#include <windows.h>
#include <stdio.h>
#include <Certif.h>

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

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerPol->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerPol->GetCertificateExtension(
                             bstrExt,
                             PROPTYPE_BINARY,
                             &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerPol->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
Header certif.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certcli.dll

См. также раздел

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy