Freigeben über


ICertServerPolicy::EnumerateExtensions-Methode (certif.h)

Die EnumerateExtensions-Methode ruft den Objektbezeichner (Object Identifier, OID) der aktuellen Erweiterung ab und verschiebt den internen Enumerationszeiger zur nächsten Erweiterung.

Syntax

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parameter

[out] pstrExtensionName

Ein Zeiger auf einen BSTR , der die OID der aktuellen Erweiterung enthält.

Rückgabewert

C++

Wenn die Methode erfolgreich ist, gibt die Methode S_OK zurück, und der pstrExtensionName-Parameter enthält die OID der aktuellen Erweiterung. Der Wert S_FALSE wird zurückgegeben, wenn die letzte Erweiterung bereits aufgezählt wurde.

Um diese Methode zu verwenden, erstellen Sie eine Variable vom Typ BSTR , legen Sie die Variable auf NULL fest, und übergeben Sie die Adresse dieser Variablen als pstrExtensionName.

Wenn Sie die Verwendung des BSTR abgeschlossen haben, geben Sie ihn frei, indem Sie die SysFreeString-Funktion aufrufen.

Wenn die Methode fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

VB

Gibt eine Zeichenfolge zurück, die die OID der Erweiterung enthält, oder eine leere Zeichenfolge, wenn die letzte Erweiterung bereits aufgezählt wurde.

Hinweise

Diese Methode listet in der Datenbank aufgezeichnete Zertifikaterweiterungen auf, auch solche, die deaktiviert sind und nicht im Zertifikat angezeigt werden. Um zu bestimmen, ob eine Erweiterung deaktiviert ist, verwenden Sie GetCertificateExtensionFlags , um das EXTENSION_DISABLE_FLAG Bit der Erweiterung zu testen.

Rufen Sie nach Abschluss der Enumeration die EnumerateExtensionsClose-Methode auf, um ressourcen freizugeben, die von den Enumerationsaufrufen verwendet werden.

Beispiele

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

Anforderungen

   
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile certif.h (include Certsrv.h)
Bibliothek Certidl.lib
DLL Certcli.dll

Weitere Informationen

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy