Метод 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::EnumerateExtensionsClose
ICertServerExit::EnumerateExtensionsSetup