次の方法で共有


ICertServerExit::EnumerateExtensions メソッド (certif.h)

EnumerateExtensions メソッドは、列挙する次の証明書拡張機能のオブジェクト識別子 (OID) 文字列 (拡張機能名とも呼ばれます) を返し、次の拡張機能への内部ポインターをインクリメントします。

EnumerateExtensions を呼び出す前に、アプリケーションは ICertServerExit::EnumerateExtensionsSetup を呼び出します。 列挙が完了すると、アプリケーションは ICertServerExit::EnumerateExtensionsClose を呼び出します。

構文

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

パラメーター

[out] pstrExtensionName

列挙された拡張名へのポインター。

戻り値

C++

メソッドが成功した場合、メソッドは S_OKを返し、*pstrExtensionName は列挙された拡張機能の名前を含む BSTR に設定されます。 最後の拡張機能が既に列挙されている場合は、S_FALSE の値が返されます。

このメソッドを使用するには、 BSTR 型の変数を作成し、変数を NULL に設定し、この変数のアドレスを pstrExtensionName として渡します。

BSTR の使用が完了したら、SysFreeString 関数を呼び出して解放します。

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

VB

列挙された拡張機能の名前を含む文字列を返します。最後の拡張機能が既に列挙されている場合は空の文字列を返します。

注釈

このメソッドは、無効で証明書に表示されない証明書拡張機能であっても、データベースに記録されている証明書拡張機能を列挙します。 拡張機能が無効になっているかどうかを判断するには、 ICertServerExit::GetCertificateExtensionFlags を使用して拡張機能のEXTENSION_DISABLE_FLAG ビットをテストします。

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

要件

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

こちらもご覧ください

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags