Compartir a través de


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

Consulte también

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy