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


Метод 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

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next