共用方式為


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)
程式庫 Certidl.lib
Dll Certcli.dll

另請參閱

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags