次の方法で共有


IEnumCERTVIEWEXTENSION::GetFlags メソッド (certview.h)

GetFlags メソッドは、拡張機能列挙シーケンス内の現在の拡張機能のポリシーフラグと配信元フラグを取得します。

ポリシー フラグと配信元フラグの両方が 1 つの変数で返され、個々の値を取得するためにビットマスクが提供されます。

構文

HRESULT GetFlags(
  [out] LONG *pFlags
);

パラメーター

[out] pFlags

拡張機能のポリシーフラグと配信元フラグを含む LONG 型へのポインター。 pFlags パラメーターが NULL に設定されている場合、このメソッドは失敗します。

戻り値

C++

メソッドが成功した場合、メソッドは S_OKを返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。

VB

戻り値は、拡張機能のポリシーと配信元の値を表します。

注釈

このメソッドは、拡張機能列挙シーケンスによって現在参照されている拡張機能のポリシーフラグと配信元フラグを取得するために使用されます。

ポリシー フラグは証明書拡張機能に関する情報を提供し、ポリシー モジュールで設定できます。

配信元フラグは、証明書拡張機能を設定し、サーバー エンジンによってのみ設定されるモジュールを示します。

拡張機能から 1 つ以上のポリシー フラグを返すことができます。 定義済みのポリシー フラグを次に示します。

ポリシー フラグの値 説明
EXTENSION_CRITICAL_FLAG これは重要な拡張機能です。
EXTENSION_DISABLE_FLAG 拡張機能は使用されません。
 

次のいずれかの配信元フラグを返すこともできます。

配信元フラグの値 説明
EXTENSION_ORIGIN_REQUEST 拡張機能は、PKCS #10 要求のszOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.1.14) またはszOID_RSA_certExtensions (1.2.840.113549.1.9.14) 属性に格納されている拡張機能の配列から抽出されました。
EXTENSION_ORIGIN_POLICY ポリシー モジュールによって拡張機能が設定されます。
EXTENSION_ORIGIN_ADMIN 管理者が拡張機能を設定します。
EXTENSION_ORIGIN_SERVER サーバー エンジンによって拡張機能が設定されます。
EXTENSION_ORIGIN_RENEWALCERT 拡張機能は、PKCS #10 更新要求のszOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) 属性に格納されている証明書から抽出されました。
EXTENSION_ORIGIN_IMPORTEDCERT 拡張機能がインポートされた証明書から抽出されました (証明書は ICertAdmin::ImportCertificate に渡されました)。
EXTENSION_ORIGIN_PKCS7 拡張機能は、PKCS #7 要求のszOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.1.14) またはszOID_RSA_certExtensions (1.2.840.113549.1.9.14) 属性に格納されている拡張機能の配列から抽出されました。
 

定義済みのマスクは、戻り値に設定されているフラグを簡単に判断するために用意されています。 次のマスクが用意されています。

マスク値 説明
EXTENSION_POLICY_MASK この値 (0x0000FFFF) は、ポリシー フラグを調べるのに使用されます。
EXTENSION_ORIGIN_MASK この値 (0x000F0000) は、配信元フラグを調べるのに使用されます。
 

拡張列挙シーケンスが有効な拡張機能を参照していない場合、 GetFlags は失敗します。 列挙体内を移動するには、次のいずれかのメソッドを使用します。

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

要件

要件
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー certview.h (Certsrv.h を含む)
Library Certidl.lib
[DLL] Certadm.dll

こちらもご覧ください

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next