Método ICertServerPolicy::EnumerateExtensions (certif.h)
El método EnumerateExtensions recupera el identificador de objeto (OID) de la extensión actual y mueve el puntero de enumeración interno a la siguiente extensión.
Sintaxis
HRESULT EnumerateExtensions(
[out] BSTR *pstrExtensionName
);
Parámetros
[out] pstrExtensionName
Puntero a un BSTR que contiene el OID de la extensión actual.
Valor devuelto
C++
Si el método se ejecuta correctamente, el método devuelve S_OK y el parámetro pstrExtensionName contiene el OID de la extensión actual. Se devuelve un valor de S_FALSE si ya se ha enumerado la última extensión.Para usar este método, cree una variable de tipo BSTR , establezca la variable igual a NULL y pase la dirección de esta variable como pstrExtensionName.
Cuando haya terminado de usar el BSTR, áurelo llamando a la función SysFreeString .
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
Devuelve una cadena que contiene el OID de la extensión o una cadena vacía si ya se ha enumerado la última extensión.Comentarios
Este método enumera las extensiones de certificado registradas en la base de datos, incluso las que están deshabilitadas y no aparecen en el certificado. Para determinar si una extensión está deshabilitada, use GetCertificateExtensionFlags para probar el bit de EXTENSION_DISABLE_FLAG de la extensión.
Cuando haya terminado de enumerar, llame al método EnumerateExtensionsClose para liberar recursos usados por las llamadas de enumeración.
Ejemplos
#include <windows.h>
#include <stdio.h>
#include <Certif.h>
BSTR bstrExt = NULL;
VARIANT varExt;
LONG ExtFlags;
HRESULT hr;
VariantInit(&varExt);
// Enumerate the extensions.
while (S_OK ==
(hr = pCertServerPol->EnumerateExtensions(&bstrExt)))
{
// Retrieve the extension data.
if (FAILED(pCertServerPol->GetCertificateExtension(
bstrExt,
PROPTYPE_BINARY,
&varExt)))
printf("Failed GetCertificateExtension\n");
else
{
// Retrieve the extension flags.
if (FAILED(pCertServerPol->GetCertificateExtensionFlags(
&ExtFlags)))
printf("Failed GetCertificateExtensionFlags\n");
else
// This sample will display the extension OID string,
// the extension flags (in hex) and
// the length of the BSTR binary ASN-encode extension.
printf("Extension: %ws\tFlags:%x\tLength:%u\n",
bstrExt,
ExtFlags,
SysStringByteLen(varExt.bstrVal));
}
}
// Determine if hr was S_FALSE, meaning the enumeration
// was completed, or some other error.
if (S_FALSE != hr)
printf("Failed EnumerateExtensions - %x\n", hr);
// Free BSTR resource.
if (NULL != bstrExt)
SysFreeString(bstrExt);
// Free VARIANT resource.
VariantClear(&varExt);
Requisitos
Cliente mínimo compatible | No se admite ninguno |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | certif.h (incluya Certsrv.h) |
Library | Certidl.lib |
Archivo DLL | Certcli.dll |