Partager via


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

La méthode EnumerateExtensions retourne la chaîne d’identificateur d’objet (OID) (également appelée nom d’extension) de l’extension de certificat suivante à énumérer, puis incrémente le pointeur interne vers l’extension suivante.

Avant d’appeler EnumerateExtensions, une application appelle ICertServerExit ::EnumerateExtensionsSetup. Une fois l’énumération terminée, une application appelle ICertServerExit ::EnumerateExtensionsClose.

Syntaxe

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Paramètres

[out] pstrExtensionName

Pointeur vers le nom de l’extension énumérée.

Valeur retournée

C++

Si la méthode réussit, la méthode retourne S_OK, et *pstrExtensionName est défini sur le BSTR qui contient le nom de l’extension énumérée. La valeur S_FALSE est retournée si la dernière extension a déjà été énumérée.

Pour utiliser cette méthode, créez une variable de type BSTR , définissez la variable sur NULL et transmettez l’adresse de cette variable en tant que pstrExtensionName.

Lorsque vous avez terminé d’utiliser le BSTR, libérez-le en appelant la fonction SysFreeString .

Si la méthode échoue, elle retourne une valeur HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

VB

Retourne une chaîne qui contient le nom de l’extension énumérée, ou une chaîne vide si la dernière extension a déjà été énumérée.

Remarques

Cette méthode énumère les extensions de certificat enregistrées dans la base de données, même celles qui sont désactivées et qui n’apparaissent pas dans le certificat. Pour déterminer si une extension est désactivée, utilisez ICertServerExit ::GetCertificateExtensionFlags pour tester le bit EXTENSION_DISABLE_FLAG de l’extension.

Exemples

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certif.h (include Certsrv.h)
Bibliothèque Certidl.lib
DLL Certcli.dll

Voir aussi

ICertServerExit

ICertServerExit ::EnumerateExtensionsClose

ICertServerExit ::EnumerateExtensionsSetup

ICertServerExit ::GetCertificateExtension

ICertServerExit ::GetCertificateExtensionFlags