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 值

返回代码 说明
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)
Library Certidl.lib
DLL Certadm.dll

另请参阅

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig