Metodo ICertServerExit::EnumerateExtensions (certif.h)

Il metodo EnumerateExtensions restituisce la stringa OID ( Object Identifier ) (nota anche come nome di estensione) dell'estensione del certificato successiva da enumerare, quindi incrementa il puntatore interno all'estensione seguente.

Prima di chiamare EnumerateExtensions, un'applicazione chiama ICertServerExit::EnumerateExtensionsSetup. Al termine dell'enumerazione, un'applicazione chiama ICertServerExit::EnumerateExtensionsClose.

Sintassi

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parametri

[out] pstrExtensionName

Puntatore al nome dell'estensione enumerata.

Valore restituito

C++

Se il metodo ha esito positivo, il metodo restituisce S_OK e *pstrExtensionName è impostato su BSTR che contiene il nome dell'estensione enumerata. 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 il nome dell'estensione enumerata 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 ICertServerExit::GetCertificateExtensionFlags per testare il bit di EXTENSION_DISABLE_FLAG dell'estensione.

Esempio

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

Requisiti

Requisito Valore
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

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags