C++ 中的返回值

在 C++ 中,返回值的类型通常为 HRESULT。 根据此返回值可以确定方法是否成功;如果不成功,则确定发生的错误。 在方法成功完成时,证书服务通常会针对 HRESULT 返回 S_OK。 需要返回的编程值可通过方法中的“out”参数返回。 以下示例演示如何使用 C++ 方法调用检索请求属性:

BSTR      bstrPropName = NULL;
VARIANT   varProp;
HRESULT   hr;

VariantInit(&varProp);

bstrPropName = SysAllocString(L"RequestID");
if (NULL == bstrPropName)
{
    printf("Failed SysAllocString\n");
    // Take application-specific error action.
    exit(1);
}

// Retrieve the request property.
// pCertServerPolicy is a pointer to a previously
// instantiated ICertServerPolicy object.
hr = pCertServerPolicy->GetRequestProperty(bstrPropName,
                                           PROPTYPE_LONG,
                                           &varProp);
if (S_OK != hr)
{
    printf("Failed GetRequestProperty [%x]\n", hr);
    // Take application-specific error action.
    // ...
}
else
{
    // Successfully retrieved property; use varProp as needed.
    // ...
}

// Done processing.
VariantClear(&varProp);
if (NULL != bstrPropName)
    SysFreeString(bstrPropName);

在前面的代码片段中,会将成功或失败返回到 HRESULT 变量 hr。 必须检查 HRESULT 变量是否成功 [按条件 (S_OK != hr) 在代码中处理]。 如果方法成功完成,则会在 VARIANT varProp 参数中返回请求属性值。