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.
HRESULT EnumerateExtensions(
[out] BSTR *pstrExtensionName
);
[out] pstrExtensionName
Pointeur vers le nom de l’extension énumérée.
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.
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.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.
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);
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 |
ICertServerExit ::EnumerateExtensionsClose
ICertServerExit ::EnumerateExtensionsSetup