Método IEnumCERTVIEWEXTENSION::GetFlags (certview.h)

O método GetFlags recupera os sinalizadores de política e de origem da extensão atual na sequência de enumeração de extensão.

Os sinalizadores de política e de origem são retornados em uma variável e as máscaras de bits são fornecidas para recuperar os valores individuais.

Sintaxe

HRESULT GetFlags(
  [out] LONG *pFlags
);

Parâmetros

[out] pFlags

Um ponteiro para um tipo LONG que contém os sinalizadores de política e de origem da extensão. Esse método falhará se o parâmetro pFlags estiver definido como NULL.

Retornar valor

C++

Se o método for bem-sucedido, o método retornará S_OK.

Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.

VB

O valor retornado representa os valores de política e origem da extensão.

Comentários

Esse método é usado para recuperar os sinalizadores de política e de origem da extensão referenciada atualmente pela sequência de enumeração de extensão.

Os sinalizadores de política fornecem informações sobre a extensão de certificado e podem ser definidos pelo módulo de política.

Os sinalizadores de origem indicam o módulo que define a extensão de certificado e são definidos apenas pelo mecanismo de servidor.

Um ou mais sinalizadores de política podem ser retornados de uma extensão. Veja a seguir os sinalizadores de política predefinidos.

Valor do sinalizador de política Explicação
EXTENSION_CRITICAL_FLAG Essa é uma extensão crítica.
EXTENSION_DISABLE_FLAG A extensão não será usada.
 

Um dos sinalizadores de origem a seguir também pode ser retornado.

Valor do sinalizador de origem Explicação
EXTENSION_ORIGIN_REQUEST A extensão foi extraída de uma matriz de extensões armazenadas no szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de uma solicitação PKCS nº 10.
EXTENSION_ORIGIN_POLICY O módulo de política define a extensão.
EXTENSION_ORIGIN_ADMIN O administrador definiu a extensão.
EXTENSION_ORIGIN_SERVER O mecanismo de servidor definiu a extensão.
EXTENSION_ORIGIN_RENEWALCERT A extensão foi extraída do certificado armazenado no atributo szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) de uma solicitação de renovação PKCS #10.
EXTENSION_ORIGIN_IMPORTEDCERT A extensão foi extraída de um certificado importado (o certificado foi passado para ICertAdmin::ImportCertificate).
EXTENSION_ORIGIN_PKCS7 A extensão foi extraída de uma matriz de extensões armazenadas no szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de uma solicitação PKCS nº 7.
 

Máscaras predefinidas são fornecidas para facilitar o uso na determinação de quais sinalizadores são definidos no valor retornado. As máscaras a seguir são fornecidas.

Valor da máscara Explicação
EXTENSION_POLICY_MASK Esse valor (0x0000FFFF) é usado para examinar sinalizadores de política.
EXTENSION_ORIGIN_MASK Esse valor (0x000F0000) é usado para examinar sinalizadores de origem.
 

Se a sequência de enumeração de extensão não estiver fazendo referência a uma extensão válida, GetFlags falhará. Use um dos seguintes métodos para navegar pela enumeração:

Exemplos

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;
    }
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Nenhum compatível
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho certview.h (inclua Certsrv.h)
Biblioteca Certidl.lib
DLL Certadm.dll

Confira também

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next