Метод IEnumCERTVIEWEXTENSION::GetFlags (certview.h)
Метод GetFlags извлекает флаги политики и источника текущего расширения в последовательности перечисления расширений.
Флаги политики и источника возвращаются в одной переменной, а битовые маски предоставляются для получения отдельных значений.
Синтаксис
HRESULT GetFlags(
[out] LONG *pFlags
);
Параметры
[out] pFlags
Указатель на тип LONG , содержащий флаги политики и источника расширения. Этот метод завершается ошибкой, если для параметра pFlags задано значение NULL.
Возвращаемое значение
C++
Если метод завершается успешно, метод возвращает S_OK.Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
VB
Возвращаемое значение представляет значения политики и источника расширения.Комментарии
Этот метод используется для получения флагов политики и источника расширения, на которое в настоящее время ссылается последовательность перечисления расширений.
Флаги политики предоставляют сведения о расширении сертификата и могут быть заданы модулем политики.
Флаги источника указывают модуль, который задает расширение сертификата, и задаются только серверным ядром.
Из расширения можно вернуть один или несколько флагов политики. Ниже приведены стандартные флаги политики.
Значение флага политики | Описание |
---|---|
EXTENSION_CRITICAL_FLAG | Это критическое расширение. |
EXTENSION_DISABLE_FLAG | Расширение не будет использоваться. |
Также можно вернуть один из следующих флагов источника.
Значение флага источника | Описание |
---|---|
EXTENSION_ORIGIN_REQUEST | Расширение было извлечено из массива расширений, хранящихся в szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) или szOID_RSA_certExtensions (1.2.840.113549.1.9.14) запроса PKCS #10. |
EXTENSION_ORIGIN_POLICY | Модуль политики задает расширение. |
EXTENSION_ORIGIN_ADMIN | Администратор настроит расширение. |
EXTENSION_ORIGIN_SERVER | Подсистема сервера задает расширение. |
EXTENSION_ORIGIN_RENEWALCERT | Расширение было извлечено из сертификата, хранящегося в атрибуте szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) запроса на продление PKCS #10. |
EXTENSION_ORIGIN_IMPORTEDCERT | Расширение было извлечено из импортированного сертификата (сертификат был передан в ICertAdmin::ImportCertificate). |
EXTENSION_ORIGIN_PKCS7 | Расширение было извлечено из массива расширений, хранящихся в szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) или szOID_RSA_certExtensions (1.2.840.113549.1.9.14) запроса PKCS #7. |
Предопределенные маски предоставляются для простоты использования при определении флагов, заданных в возвращаемом значении. Приведены следующие маски.
Значение маски | Описание |
---|---|
EXTENSION_POLICY_MASK | Это значение (0x0000FFFF) используется для проверки флагов политики. |
EXTENSION_ORIGIN_MASK | Это значение (0x000F0000) используется для проверки флагов источника. |
Если последовательность перечисления расширений не ссылается на допустимое расширение, getFlags завершится ошибкой. Для перехода по перечислению используйте один из следующих методов:
- IEnumCERTVIEWEXTENSION::Reset: переходит к следующему расширению в последовательности перечисления.
- IEnumCERTVIEWEXTENSION::Next: переходит к следующему расширению в последовательности перечисления.
- IEnumCERTVIEWEXTENSION::Skip: пропускает указанное число расширений.
Примеры
HRESULT hr;
LONG ExtFlags;
// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
hr = pEnumExt->GetFlags(&ExtFlags);
if (S_OK != hr)
printf("Failed GetFlags - %x\n", hr);
else
{
LONG ExtPol, ExtOrig;
ExtPol = ExtFlags & EXTENSION_POLICY_MASK;
if (ExtPol & EXTENSION_CRITICAL_FLAG)
printf("The extension is critical\n");
if (ExtPol & EXTENSION_DISABLE_FLAG )
printf("The extension is disabled\n");
ExtOrig = ExtFlags & EXTENSION_ORIGIN_MASK;
switch (ExtOrig)
{
case EXTENSION_ORIGIN_REQUEST:
printf("Extension originated by PKCS #10 Request\n");
break;
case EXTENSION_ORIGIN_POLICY:
printf("Extension originated by Policy\n");
break;
case EXTENSION_ORIGIN_ADMIN:
printf("Extension originated by Admin\n");
break;
case EXTENSION_ORIGIN_SERVER:
printf("Extension originated by Server\n");
break;
case EXTENSION_ORIGIN_RENEWALCERT:
printf("Extension originated by Renewal Request\n");
break;
case EXTENSION_ORIGIN_IMPORTEDCERT:
printf("Extension originated by an imported "
"certificate\n");
break;
case EXTENSION_ORIGIN_PKCS7:
printf("Extension originated by PKCS #7 Request\n");
break;
default:
printf("Unknown extension origin\n");
break;
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Ни одна версия не поддерживается |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | certview.h (включая Certsrv.h) |
Библиотека | Certidl.lib |
DLL | Certadm.dll |
См. также раздел
IEnumCERTVIEWEXTENSION::GetName