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


Метод 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
Header certif.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certcli.dll

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

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags