Compartilhar via


Valores retornados em C++

Em C++, o valor retornado normalmente é do tipo HRESULT. É a partir desse valor de retorno que se pode determinar se o método foi bem-sucedido ou não e, se não, qual foi o erro. Os Serviços de Certificados normalmente retornam S_OK para o HRESULT quando o método é concluído com êxito. Os valores programáticos que precisam ser retornados são retornados por meio de parâmetros "out" no método. O exemplo a seguir mostra uma chamada de método C++ para recuperar uma propriedade de solicitação:

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

No fragmento de código anterior, o êxito ou a falha é retornado para a variável HRESULT, hr. É imperativo verificar se a variávelHRESULT é bem-sucedida [tratada no código pela condição (S_OK != hr)]. Se o método for concluído com êxito, o valor da propriedade de solicitação será retornado no parâmetro VARIANT varProp.