Compartir a través de


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

El método GetFlags recupera las marcas de directiva y origen de la extensión actual en la secuencia de enumeración de extensión.

Tanto la directiva como las marcas de origen se devuelven en una variable y se proporcionan máscaras de bits para recuperar los valores individuales.

Sintaxis

HRESULT GetFlags(
  [out] LONG *pFlags
);

Parámetros

[out] pFlags

Puntero a un tipo LONG que contiene las marcas de directiva y origen de la extensión. Este método produce un error si el parámetro pFlags está establecido en NULL.

Valor devuelto

C++

Si el método se realiza correctamente, el método devuelve S_OK.

Si se produce un error en el método, devuelve un valor HRESULT que indica el error. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

VB

El valor devuelto representa los valores de directiva y origen de la extensión.

Comentarios

Este método se usa para recuperar las marcas de directiva y origen de la extensión a las que hace referencia actualmente la secuencia de enumeración de extensiones.

Las marcas de directiva proporcionan información sobre la extensión de certificado y se pueden establecer mediante el módulo de directivas.

Las marcas de origen indican el módulo que establece la extensión de certificado y solo lo establecen el motor de servidor.

Se pueden devolver una o varias marcas de directiva desde una extensión. A continuación se muestran marcas de directiva predefinidas.

Valor de marca de directiva Explicación
EXTENSION_CRITICAL_FLAG Se trata de una extensión crítica.
EXTENSION_DISABLE_FLAG No se usará la extensión.
 

También se puede devolver una de las marcas de origen siguientes.

Valor de marca de origen Explicación
EXTENSION_ORIGIN_REQUEST La extensión se extrajo de una matriz de extensiones almacenadas en el szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de una solicitud PKCS #10.
EXTENSION_ORIGIN_POLICY El módulo de directiva establece la extensión.
EXTENSION_ORIGIN_ADMIN El administrador establece la extensión.
EXTENSION_ORIGIN_SERVER El motor de servidor establece la extensión.
EXTENSION_ORIGIN_RENEWALCERT La extensión se extrajo del certificado almacenado en el atributo szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) de una solicitud de renovación PKCS #10.
EXTENSION_ORIGIN_IMPORTEDCERT La extensión se extrajo de un certificado importado (el certificado se pasó a ICertAdmin::ImportCertificate).
EXTENSION_ORIGIN_PKCS7 La extensión se extrajo de una matriz de extensiones almacenadas en el szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de una solicitud PKCS #7.
 

Las máscaras predefinidas se proporcionan para facilitar su uso a la hora de determinar qué marcas se establecen en el valor devuelto. Se proporcionan las siguientes máscaras.

Valor de máscara Explicación
EXTENSION_POLICY_MASK Este valor (0x0000FFFF) se usa para examinar las marcas de directiva.
EXTENSION_ORIGIN_MASK Este valor (0x000F0000) se usa para examinar las marcas de origen.
 

Si la secuencia de enumeración de extensión no hace referencia a una extensión válida, Se producirá un error en GetFlags . Use uno de los métodos siguientes para navegar por la enumeración :

Ejemplos

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 Value
Cliente mínimo compatible No se admite ninguno
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certview.h (incluye Certsrv.h)
Library Certidl.lib
Archivo DLL Certadm.dll

Consulte también

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next