Freigeben über


IEnumCERTVIEWEXTENSION::GetFlags-Methode (certview.h)

Die GetFlags-Methode ruft die Richtlinien- und Ursprungsflags der aktuellen Erweiterung in der Extension-Enumeration-Sequenz ab.

Sowohl die Richtlinien- als auch die Ursprungsflags werden in einer Variablen zurückgegeben, und Bitmasken werden bereitgestellt, um die einzelnen Werte abzurufen.

Syntax

HRESULT GetFlags(
  [out] LONG *pFlags
);

Parameter

[out] pFlags

Ein Zeiger auf einen LONG-Typ , der die Richtlinien- und Ursprungsflags der Erweiterung enthält. Diese Methode schlägt fehl, wenn der pFlags-Parameter auf NULL festgelegt ist.

Rückgabewert

C++

Wenn die Methode erfolgreich ist, gibt die Methode S_OK zurück.

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

Der Rückgabewert stellt die Richtlinien- und Ursprungswerte der Erweiterung dar.

Hinweise

Diese Methode wird verwendet, um die Richtlinien- und Ursprungsflags der Erweiterung abzurufen, auf die derzeit von der Extension-Enumerationssequenz verwiesen wird.

Richtlinienflags enthalten Informationen zur Zertifikaterweiterung und können vom Richtlinienmodul festgelegt werden.

Ursprungsflags geben das Modul an, das die Zertifikaterweiterung festgelegt hat, und werden nur von der Server-Engine festgelegt.

Ein oder mehrere Richtlinienflags können von einer Erweiterung zurückgegeben werden. Im Folgenden sind vordefinierte Richtlinienflags aufgeführt.

Richtlinienflagwert Erklärung
EXTENSION_CRITICAL_FLAG Dies ist eine wichtige Erweiterung.
EXTENSION_DISABLE_FLAG Die Erweiterung wird nicht verwendet.
 

Eines der folgenden Ursprungsflags kann auch zurückgegeben werden.

Ursprungsflagwert Erklärung
EXTENSION_ORIGIN_REQUEST Die Erweiterung wurde aus einem Array von Erweiterungen extrahiert, die im szOID_CERT_EXTENSIONS-Attribut (1.3.6.1.4.1.311.2.1.14) oder szOID_RSA_certExtensions (1.2.840.113549.1.1.9.14) einer PKCS #10-Anforderung gespeichert sind.
EXTENSION_ORIGIN_POLICY Das Richtlinienmodul legt die Erweiterung fest.
EXTENSION_ORIGIN_ADMIN Der Administrator hat die Erweiterung festgelegt.
EXTENSION_ORIGIN_SERVER Die Server-Engine legt die Erweiterung fest.
EXTENSION_ORIGIN_RENEWALCERT Die Erweiterung wurde aus dem Zertifikat extrahiert, das im szOID_RENEWAL_CERTIFICATE-Attribut (1.3.6.1.4.1.311.13.1) einer PKCS #10-Verlängerungsanforderung gespeichert ist.
EXTENSION_ORIGIN_IMPORTEDCERT Die Erweiterung wurde aus einem importierten Zertifikat extrahiert (das Zertifikat wurde an ICertAdmin::ImportCertificate übergeben).
EXTENSION_ORIGIN_PKCS7 Die Erweiterung wurde aus einem Array von Erweiterungen extrahiert, die im Attribut szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) oder szOID_RSA_certExtensions (1.2.840.113549.1.9.14) einer PKCS #7-Anforderung gespeichert sind.
 

Vordefinierte Masken werden zur einfacheren Verwendung bereitgestellt, um zu bestimmen, welche Flags im Rückgabewert festgelegt werden. Die folgenden Masken werden bereitgestellt.

Maskierungswert Erklärung
EXTENSION_POLICY_MASK Dieser Wert (0x0000FFFF) wird verwendet, um Richtlinienflags zu untersuchen.
EXTENSION_ORIGIN_MASK Dieser Wert (0x000F0000) wird verwendet, um Ursprungsflags zu untersuchen.
 

Wenn die Erweiterungsaufzählungssequenz nicht auf eine gültige Erweiterung verweist, schlägt GetFlags fehl. Verwenden Sie eine der folgenden Methoden, um durch die Enumeration zu navigieren:

Beispiele

HRESULT  hr;
LONG     ExtFlags;

// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
hr = pEnumExt->GetFlags(&ExtFlags);
if (S_OK != hr)
    printf("Failed GetFlags - %x\n", hr);
else
{
    LONG ExtPol, ExtOrig;

    ExtPol = ExtFlags & EXTENSION_POLICY_MASK;
    if (ExtPol & EXTENSION_CRITICAL_FLAG)
        printf("The extension is critical\n");
    if (ExtPol & EXTENSION_DISABLE_FLAG )
        printf("The extension is disabled\n");

    ExtOrig = ExtFlags & EXTENSION_ORIGIN_MASK;
    switch (ExtOrig)
    {
        case EXTENSION_ORIGIN_REQUEST:
            printf("Extension originated by PKCS #10 Request\n");
            break;
        case EXTENSION_ORIGIN_POLICY:
            printf("Extension originated by Policy\n");
            break;
        case EXTENSION_ORIGIN_ADMIN:
            printf("Extension originated by Admin\n");
            break;
        case EXTENSION_ORIGIN_SERVER:
            printf("Extension originated by Server\n");
            break;
        case EXTENSION_ORIGIN_RENEWALCERT:
            printf("Extension originated by Renewal Request\n");
            break;
        case EXTENSION_ORIGIN_IMPORTEDCERT:
            printf("Extension originated by an imported "
                "certificate\n");
            break;
        case EXTENSION_ORIGIN_PKCS7:
            printf("Extension originated by PKCS #7 Request\n");
            break;
        default:
            printf("Unknown extension origin\n");
            break;
    }
}

Anforderungen

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

Weitere Informationen

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next