Função SetErrorInfo (oleauto.h)
Define o objeto de informações de erro para o thread lógico atual de execução.
Sintaxe
HRESULT SetErrorInfo(
[in] ULONG dwReserved,
[in, optional] IErrorInfo *perrinfo
);
Parâmetros
[in] dwReserved
Reservado para uso futuro. Deve ser zero.
[in, optional] perrinfo
Um objeto de erro.
Retornar valor
Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Essa função libera o objeto de informações de erro existente, se houver, e define o ponteiro como perrinfo. Use essa função depois de criar um objeto de erro que associe o objeto ao thread lógico atual de execução.
Se a propriedade ou método que chama SetErrorInfo for chamado por DispInvoke, DispInvoke preencherá o parâmetro EXCEPINFO com os valores especificados no objeto de informações de erro. DispInvoke retornará DISP_E_EXCEPTION quando a propriedade ou o método retornar um valor de retorno de falha para DispInvoke
Os controladores de associação VTBL (tabela de funções virtuais) que não usam IDispatch::Invoke podem obter o objeto de informações de erro usando GetErrorInfo. Isso permite que um objeto que dê suporte a uma interface dupla use SetErrorInfo, independentemente de o cliente usar associação VTBL ou IDispatch.
Quando uma chamada entre apartamentos é feita COM limpa qualquer objeto de erro.
Fazer uma chamada COM que passa por um proxy-stub limpará qualquer objeto de erro existente para o thread de chamada. Um objeto chamado não deve fazer essas chamadas depois de chamar SetErrorInfo e antes de retornar. O chamador não deve fazer essas chamadas depois que a chamada retornar e antes de chamar GetErrorInfo. Como regra geral, um método de interface deve retornar o mais rápido possível depois de chamar SetErrorInfo, e o chamador deve chamar GetErrorInfo o mais rápido possível após o retorno da chamada.
Inserir o loop de mensagem modal COM limpará qualquer objeto de erro existente. Um objeto chamado não deve inserir um loop de mensagem depois de chamar SetErrorInfo.
Exemplos
ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;
hr = CreateErrorInfo(&pcerrinfo);
if (SUCCEEDED(hr))
{
hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
if (SUCCEEDED(hr))
{
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
pcerrinfo->Release();
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | oleauto.h |
Biblioteca | OleAut32.lib |
DLL | OleAut32.dll |