共用方式為


ICertAdmin::GetCRL 方法 (certadm.h)

GetCRL 方法會擷取憑證服務證書頒發機構單位 (CA) 的目前證書吊銷清單 (CRL) 。 此方法最初是在 ICertAdmin 介面中定義。

語法

HRESULT GetCRL(
  [in]  const BSTR strConfig,
  [in]  LONG       Flags,
  [out] BSTR       *pstrCRL
);

參數

[in] strConfig

表示您想要擷取其CRL之CA的有效組態字串。 此字串的格式為 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是憑證服務伺服器的網路名稱,CANAME 是 CA 的一般名稱,如憑證服務設定期間所輸入。 如需組態字串名稱的相關信息,請參閱 ICertConfig

重要GetCRL 不會在設定字串變更時清除內部快取。 當您變更 CA 的組態字串時,您必須具現化新的 ICertAdmin 物件,並使用新的組態字串再次呼叫此方法。
 

[in] Flags

指定傳回 CRL 的格式。 此參數可以是下列其中一個旗標。

意義
CR_OUT_BASE64HEADER
BASE64 格式開頭/結尾。
CR_OUT_BASE64
不含開始/結束的BASE64格式。
CR_OUT_BINARY
二進位格式。

[out] pstrCRL

接收CRL之 BSTR 的指標。

使用此方法時,請建立 BSTR 類型的變數、將變數設定為 NULL,並在 pbstrCRL 參數中傳遞此變數的位址。 當您完成 使用 BSTR 變數時,請呼叫 SysFreeString 函式來釋放它。

傳回值

如果函式成功,函式會傳回S_OK。

如果函式失敗,它會傳回 HRESULT 值,指出錯誤。 可能的值包括 (但不限於) 下表中的這些值。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值

傳回碼 Description
E_POINTER
strConfig 參數不可為 NULL,或找不到 CRL。

備註

系統管理工作使用DCOM。 呼叫這個介面方法的程序代碼,如舊版 Certadm.h 中所定義,只要客戶端和伺服器都執行相同的 Windows 作業系統,就會在 Windows 伺服器上執行。

範例

下列範例會宣告必要的變數、初始化 COM,並建立 CertAdmin 類別的實例。 然後它會呼叫 GetCRL ,並將成功或失敗列印到畫面。 最後,它會釋放資源。

    ICertAdmin * pCertAdmin = NULL;  // pointer to interface object
    BSTR bstrCA = NULL;              // variable for machine\CAName
    BSTR bstrCRL = NULL;             // variable to contain
                                     // the retrieved CRL

    HRESULT hr;

    //  Initialize COM.
    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx [%x]\n", hr);
        goto error;
    }

    //  Create the CertAdmin object
    //  and get a pointer to its ICertAdmin interface.
    hr = CoCreateInstance( CLSID_CCertAdmin,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           IID_ICertAdmin,
                           (void **)&pCertAdmin);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance pCertAdmin [%x]\n", hr);
        goto error;
    }

    //  Note the use of two backslashes (\\) 
   //  in C++ to produce one backslash (\).
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (FAILED(hr))
    {
        printf("Failed to allocate memory for bstrCA\n");
        goto error;
    }

    //  Retrieve the CRL.
    hr = pCertAdmin->GetCRL( bstrCA, CR_OUT_BINARY, &bstrCRL );
    if (FAILED(hr))
    {
        printf("Failed GetCRL [%x]\n", hr);
        goto error;
    }
    else
        printf("CRL retrieved successfully\n");
        //  Use the CRL as needed.

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrCRL)
        SysFreeString(bstrCRL);

    //  Clean up object resources.
    if (NULL != pCertAdmin)
        pCertAdmin->Release();

    //  Free COM resources.
    CoUninitialize();

規格需求

需求
最低支援的用戶端 都不支援
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 certadm.h (包含 Certsrv.h)
程式庫 Certidl.lib
Dll Certadm.dll

另請參閱

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig