Возвращаемые значения в C++
В C++возвращаемое значение обычно имеет тип HRESULT. Это значение возвращается из этого возвращаемого значения, которое можно определить, выполнен ли метод успешно или нет, а если нет, то что произошло с ошибкой. Службы сертификатов обычно возвращают S_OK для HRESULT после успешного завершения метода. Программные значения, которые необходимо вернуть, возвращаются с помощью параметров 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 .