Partager via


Valeurs de retour en C++

En C++, la valeur renvoyée est généralement de type HRESULT. C’est à partir de cette valeur de retour que l’on peut déterminer si la méthode a réussi ou non, et si elle a échoué, la nature de l’erreur. Les services de certificats renvoient généralement S_OK pour HRESULT lorsque la méthode s’est terminée sans incident. Les valeurs programmatiques qui doivent être renvoyées le sont par l’intermédiaire des paramètres « out » de la méthode. L’exemple suivant montre un appel de méthode C++ pour récupérer une propriété de requête :

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);

Dans le fragment de code précédent, la réussite ou l’échec est renvoyé à la variable HRESULT, hr. Il est impératif de vérifier la réussite de la variable HRESULT [gérée dans le code par la condition (S_OK != hr)]. Si la méthode s’est terminée sans incident, la valeur de la propriété de requête est renvoyée dans le paramètre VARIANT varProp.