Partager via


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

La méthode EnumerateExtensions récupère l’identificateur d’objet (OID) de l’extension actuelle et déplace le pointeur d’énumération interne vers l’extension suivante.

Syntaxe

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Paramètres

[out] pstrExtensionName

Pointeur vers un BSTR qui contient l’OID de l’extension actuelle.

Valeur retournée

C++

Si la méthode réussit, la méthode retourne S_OK et le paramètre pstrExtensionName contient l’OID de l’extension actuelle. 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 l’OID de l’extension, ou une chaîne vide si la dernière extension a déjà été énumérée.

Notes

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 GetCertificateExtensionFlags pour tester le bit EXTENSION_DISABLE_FLAG de l’extension.

Lorsque vous avez terminé l’énumération, appelez la méthode EnumerateExtensionsClose pour libérer les ressources utilisées par les appels d’énumération.

Exemples

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

Configuration requise

   
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

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy