Funzione SetErrorInfo (oleauto.h)

Imposta l'oggetto informazioni sull'errore per il thread logico corrente di esecuzione.

Sintassi

HRESULT SetErrorInfo(
  [in]           ULONG      dwReserved,
  [in, optional] IErrorInfo *perrinfo
);

Parametri

[in] dwReserved

Riservato per utilizzi futuri. Deve essere zero.

[in, optional] perrinfo

Oggetto errore.

Valore restituito

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questa funzione rilascia l'oggetto informazioni sull'errore esistente, se presente, e imposta il puntatore su perrinfo. Utilizzare questa funzione dopo aver creato un oggetto di errore che associa l'oggetto al thread logico corrente di esecuzione.

Se la proprietà o il metodo che chiama SetErrorInfo viene chiamato da DispInvoke, DispInvoke riempirà il parametro EXCEPINFO con i valori specificati nell'oggetto informazioni sull'errore. DispInvoke restituirà DISP_E_EXCEPTION quando la proprietà o il metodo restituisce un valore restituito di errore per DispInvoke

I controller di associazione VTBL (Virtual Function Table) che non usano IDispatch::Invoke possono ottenere l'oggetto informazioni sull'errore usando GetErrorInfo. Ciò consente a un oggetto che supporta un'interfaccia doppia di usare SetErrorInfo, indipendentemente dal fatto che il client usi l'associazione VTBL o IDispatch.

Quando viene eseguita una chiamata tra apartment, COM cancella qualsiasi oggetto di errore.

L'esecuzione di una chiamata COM che passa attraverso uno stub proxy cancella qualsiasi oggetto errore esistente per il thread chiamante. Un oggetto chiamato non deve effettuare tali chiamate dopo aver chiamato SetErrorInfo e prima di restituire . Il chiamante non deve effettuare tali chiamate dopo la restituzione della chiamata e prima di chiamare GetErrorInfo. Come regola generale, un metodo di interfaccia deve restituire il prima possibile dopo la chiamata a SetErrorInfo e il chiamante deve chiamare GetErrorInfo il prima possibile dopo la restituzione della chiamata.

Se si immette il ciclo di messaggi modali COM, verrà cancellato qualsiasi oggetto errore esistente. Un oggetto chiamato non deve immettere un ciclo di messaggi dopo aver chiamato SetErrorInfo.

Esempio

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

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione oleauto.h
Libreria OleAut32.lib
DLL OleAut32.dll