Compartir a través de


Valores devueltos en C++

En C++, el valor devuelto suele ser de tipo HRESULT. De este valor devuelto se puede determinar si el método se ha realizado correctamente o no y, si no, cuál ha sido el error. Servicios de certificados normalmente devuelve S_OK en el HRESULT cuando el método se ha completado correctamente. Los valores de programación que se deben devolver se devuelven a través de parámetros "out" en el método. En el ejemplo siguiente se muestra una llamada de método de C++ para recuperar la propiedad de una solicitud:

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

En el fragmento de código anterior, el éxito o el error se devuelven a la variable HRESULT, hr. Es obligatorio comprobar si la variable HRESULT se ha realizado correctamente [controlada en el código por la condición (S_OK != hr)]. Si el método se ha completado correctamente, el valor de propiedad de la solicitud se devolverá en el parámetro VARIANT varProp.