共用方式為


ICertAdmin2::P ublishCRLs 方法 (certadm.h)

PublishCRLs 方法會發佈證書頒發機構單位 (CA) (CRL) 的證書吊銷清單。 此方法最初是在 ICertAdmin 介面中定義。

PublishCRLs 方法會根據 CA 的目前憑證以及根據任何已更新且尚未過期的 CA 憑證來發佈 CRL。

語法

HRESULT PublishCRLs(
  [in] const BSTR strConfig,
  [in] DATE       Date,
  [in] LONG       CRLFlags
);

參數

[in] strConfig

代表 CA 的有效組態字串,格式為 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是憑證服務伺服器的網路名稱,CANAME 是證書頒發機構單位的一般名稱,如憑證服務設定期間輸入。 如需組態字串名稱的相關信息,請參閱 ICertConfig

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

[in] Date

指定 GMT 時間中 CRL 的下一個更新值。 如果 Date 不是零,CRL 的下一個更新值是 Date,受限於 憑證服務強制執行的四捨五入或上限限制。 如果 Date 是零,則 CRL 的下一個更新值是從預設 CRL 發行週期計算。

[in] CRLFlags

指定 CRL 發佈選項的值。 這個值可以是下列旗標的位元組合。

意義
CA_CRL_BASE
已發行基底 CRL,如果已設定CA_CRL_REPUBLISH,則會重新發佈最新的基底 CRL。
CA_CRL_DELTA
發佈差異 CRL,如果已設定CA_CRL_REPUBLISH,則會重新發佈最新的差異 CRL。 請注意,如果 CA 尚未啟用差異 CRL 發佈,則使用此旗標會導致錯誤。
CA_CRL_REPUBLISH
重新發佈CA_CRL_BASE或CA_CRL_DELTA所指定的最近基底或差異 CRL。 如果發佈點的CRL已經是最新的CRL,CA將不會將CRL重新發佈至CRL發佈點。

傳回值

備註

若要判斷 CA 是否已成功發佈基底和差異 CRL,請分別使用 CR_PROP_BASECRLPUBLISHSTATUS 和 CR_PROP_DELTACRLPUBLISHSTATUS 屬性標識符呼叫 ICertAdmin2::GetCAProperty

範例

下列範例顯示發佈CRL。

    DATE ExpDate;  // CRL expiration date.
    SYSTEMTIME st;
    BSTR bstrCA = NULL;

    //  Set the CRL expiration date to noon, July 1, 2001.
    //  Zero out values first (avoids setting minutes,
    //  seconds, and so on).
    memset(&st, 0, sizeof(SYSTEMTIME));
    st.wYear = 2001;
    st.wMonth = 7;     // July
    st.wDay = 1;       // first day of month
    st.wHour = 12;     // noon

    //  Place the date in required format.
    if (!SystemTimeToVariantTime(&st, &ExpDate))
    {
        printf("Unable to convert time\n");
        goto error;
    }

    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed\n");
        goto error;
    }

    //  Publish the CRL.
    //  pCertAdmin is a previously instantiated ICertAdmin object.
    hr = pCertAdmin2->PublishCRLs(bstrCA,
                              ExpDate,
                              CA_CRL_BASE);
    if (FAILED(hr))
    {
        printf("Failed PublishCRLs [%x]\n", hr);
        goto error;
    }
    else
        printf("PublishCRLs succeeded\n");
    //  Done.

error:

    //  Free resources.
    if (bstrCA)
        SysFreeString(bstrCA);

規格需求

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