Compartir a través de


Método ICertServerExit::EnumerateExtensions (certif.h)

El método EnumerateExtensions devuelve la cadena de identificador de objeto (OID) (también conocida como nombre de extensión) de la siguiente extensión de certificado que se va a enumerar y, a continuación, incrementa el puntero interno a la siguiente extensión.

Antes de llamar a EnumerateExtensions, una aplicación llama a ICertServerExit::EnumerateExtensionsSetup. Cuando haya terminado de enumerar, una aplicación llama a ICertServerExit::EnumerateExtensionsClose.

Sintaxis

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parámetros

[out] pstrExtensionName

Puntero al nombre de extensión enumerado.

Valor devuelto

C++

Si el método se ejecuta correctamente, el método devuelve S_OK y *pstrExtensionName se establece en el BSTR que contiene el nombre de la extensión enumerada. 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 BSTR, ábrelo 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 nombre de la extensión enumerada o una cadena vacía si la última extensión ya se ha enumerado.

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 ICertServerExit::GetCertificateExtensionFlags para probar el bit de EXTENSION_DISABLE_FLAG de la extensión.

Ejemplos

BSTR     bstrExt = NULL;
VARIANT  varExt;
LONG     ExtFlags;
HRESULT  hr;

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerExit->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerExit->GetCertificateExtension(
                              bstrExt,
                              PROPTYPE_BINARY,
                              &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerExit->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

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 certif.h (incluya Certsrv.h)
Library Certidl.lib
Archivo DLL Certcli.dll

Consulte también

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags