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 的格式。 此参数可以是以下标志之一。
值 | 含义 |
---|---|
|
带有开始/结束的 BASE64 格式。 |
|
不带开始/结束的 BASE64 格式。 |
|
二进制格式。 |
[out] pstrCRL
指向接收 CRL 的 BSTR 的指针。
使用此方法时,请创建 BSTR 类型的变量,将该变量设置为 NULL,并在 pbstrCRL 参数中传递此变量的地址。 使用完 BSTR 变量后,通过调用 SysFreeString 函数将其释放。
返回值
如果函数成功,该函数将返回S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 常见 HRESULT 值。
返回代码 | 说明 |
---|---|
|
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 |
另请参阅
ICertAdmin2