Fehlerüberprüfung in C++

In C++ gibt jede Certificate Services-Methode direkt einen HRESULT-Wert zurück, der angibt, ob der Methodenaufruf erfolgreich war oder fehlgeschlagen ist. Wenn der Aufruf fehlgeschlagen ist, gibt der Rückgabewert an, warum der Fehler aufgetreten ist.

Das folgende Beispiel zeigt, wie die zurückgegebenen HRESULT-Werte für die Fehlerüberprüfung verwendet werden können. Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

HRESULT hr;
BSTR strAttributeName;
BSTR strAttributeValue = NULL;

if(!(strAttributeName = SysAllocString(L"TheAttribute")))
{
     printf("Could not allocate memory for attribute name.\n");
     exit(1);
}

hr = pICertServerPolicy->GetRequestAttribute(
                                strAttributeName,
                                &strAttributeValue);
if(S_OK != hr)          // Check to determine whether method failed
{
    if (E_INVALIDARG == hr)
    {
        //... Do something to recover from errors and so on.
    }
}
// Free BSTRs when finished.
if (NULL != strAttributeName)
    SysFreeString(strAttributeName);
if (NULL != strAttributeValue)
    SysFreeString(strAttributeValue);