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 :
- IEnumCERTVIEWEXTENSION::Reset: se mueve a la siguiente extensión de la secuencia de enumeración.
- IEnumCERTVIEWEXTENSION::Next: se mueve a la siguiente extensión de la secuencia de enumeración.
- IEnumCERTVIEWEXTENSION::Skip: omite un número especificado de extensiones.
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::GetName