Rückgabewerte in C++
In C++ weist der Rückgabewert in der Regel den Typ HRESULT auf. Anhand dieses Rückgabewerts wird bestimmt, ob die Methode erfolgreich war, und wenn nicht, was der Fehler war. Zertifikatdienste geben in der Regel „S_OK“ für HRESULT zurück, wenn die Methode erfolgreich ausgeführt wurde. Programmgesteuerte Werte, die zurückgegeben werden müssen, werden über die Out-Parameter in der Methode zurückgegeben. Das folgende Beispiel zeigt einen C++-Methodenaufruf zum Abrufen einer Anforderungseigenschaft:
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);
Im vorherigen Codefragment wird „erfolgreich“ oder „fehlgeschlagen“ an den HRESULT-Wert hr zurückgegeben. Für eine erfolgreiche Ausführung muss derHRESULT-Wert unbedingt geprüft werden [wird im Code durch die Bedingung (S_OK != hr) bearbeitet]. Wurde die Methode erfolgreich ausgeführt, wird der Wert der Anforderungseigenschaft im varProp-Parameter von VARIANT zurückgegeben.