Metodo ICertServerPolicy::EnumerateExtensions (certif.h)

Il metodo EnumerateExtensions recupera l'identificatore di oggetto (OID) dell'estensione corrente e sposta il puntatore di enumerazione interno all'estensione successiva.

Sintassi

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parametri

[out] pstrExtensionName

Puntatore a un BSTR che contiene l'OID dell'estensione corrente.

Valore restituito

C++

Se il metodo ha esito positivo, il metodo restituisce S_OK e il parametro pstrExtensionName contiene l'OID dell'estensione corrente. Se l'ultima estensione è già stata enumerata, viene restituito un valore di S_FALSE.

Per usare questo metodo, creare una variabile di tipo BSTR , impostare la variabile su NULL e passare l'indirizzo di questa variabile come pstrExtensionName.

Al termine dell'uso di BSTR, liberarlo chiamando la funzione SysFreeString .

Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.

VB

Restituisce una stringa contenente l'OID dell'estensione o una stringa vuota se l'ultima estensione è già stata enumerata.

Commenti

Questo metodo enumera le estensioni del certificato registrate nel database, anche quelle disabilitate e non vengono visualizzate nel certificato. Per determinare se un'estensione è disabilitata, usare GetCertificateExtensionFlags per testare il EXTENSION_DISABLE_FLAG bit dell'estensione.

Al termine dell'enumerazione, chiamare il metodo EnumerateExtensionsClose per liberare le risorse usate dalle chiamate di enumerazione.

Esempio

#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);

Requisiti

   
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione certif.h (include Certsrv.h)
Libreria Certidl.lib
DLL Certcli.dll

Vedi anche

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy