Share via


ICertServerExit::EnumerateExtensions-Methode (certif.h)

Die EnumerateExtensions-Methode gibt die OID-Zeichenfolge ( Objektbezeichner ) (auch als Erweiterungsname bezeichnet) der nächsten Zertifikaterweiterung zurück, die aufgelistet werden soll, und erhöht dann den internen Zeiger auf die folgende Erweiterung.

Vor dem Aufruf von EnumerateExtensions ruft eine Anwendung ICertServerExit::EnumerateExtensionsSetup auf. Wenn die Aufzählung abgeschlossen ist, ruft eine Anwendung ICertServerExit::EnumerateExtensionsClose auf.

Syntax

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parameter

[out] pstrExtensionName

Ein Zeiger auf den aufgezählten Erweiterungsnamen.

Rückgabewert

C++

Wenn die Methode erfolgreich ist, gibt die Methode S_OK zurück, und *pstrExtensionName wird auf den BSTR festgelegt, der den Namen der aufgezählten Erweiterung enthält. Ein Wert von S_FALSE wird zurückgegeben, wenn die letzte Erweiterung bereits aufgelistet wurde.

Um diese Methode zu verwenden, erstellen Sie eine Variable vom Typ BSTR , legen Sie die Variable gleich 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 den Namen der aufgezählten Erweiterung enthält, oder eine leere Zeichenfolge, wenn die letzte Erweiterung bereits aufgelistet wurde.

Hinweise

Diese Methode listet Zertifikaterweiterungen auf, die in der Datenbank aufgezeichnet wurden, auch diejenigen, die deaktiviert sind und nicht im Zertifikat angezeigt werden. Um zu ermitteln, ob eine Erweiterung deaktiviert ist, verwenden Sie ICertServerExit::GetCertificateExtensionFlags , um das EXTENSION_DISABLE_FLAG Bit der Erweiterung zu testen.

Beispiele

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

Anforderungen

Anforderung Wert
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

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags