Partager via


SetErrorInfo, fonction (oleauto.h)

Définit l’objet d’informations d’erreur pour le thread logique d’exécution actuel.

Syntaxe

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

Paramètres

[in] dwReserved

Réservé pour un usage futur. Doit être zéro.

[in, optional] perrinfo

Objet d’erreur.

Valeur retournée

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cette fonction libère l’objet d’informations d’erreur existant, le cas échéant, et définit le pointeur sur perrinfo. Utilisez cette fonction après avoir créé un objet d’erreur qui associe l’objet au thread logique d’exécution actuel.

Si la propriété ou la méthode qui appelle SetErrorInfo est appelée par DispInvoke, DispInvoke remplira le paramètre EXCEPINFO avec les valeurs spécifiées dans l’objet d’informations d’erreur. DispInvoke retourne DISP_E_EXCEPTION lorsque la propriété ou la méthode retourne une valeur de retour d’échec pour DispInvoke

Les contrôleurs de liaison de table de fonctions virtuelles (VTBL) qui n’utilisent pas IDispatch ::Invoke peuvent obtenir l’objet d’informations d’erreur à l’aide de GetErrorInfo. Cela permet à un objet qui prend en charge une interface double d’utiliser SetErrorInfo, que le client utilise la liaison VTBL ou IDispatch.

Lorsqu’un appel inter-appartement est effectué, COM efface tout objet d’erreur.

L’exécution d’un appel COM qui passe par un proxy-stub efface tout objet d’erreur existant pour le thread appelant. Un objet appelé ne doit pas effectuer de tels appels après avoir appelé SetErrorInfo et avant de le retourner. L’appelant ne doit pas effectuer de tels appels après le retour de l’appel et avant d’appeler GetErrorInfo. En règle générale, une méthode d’interface doit retourner dès que possible après l’appel de SetErrorInfo, et l’appelant doit appeler GetErrorInfo dès que possible après le retour de l’appel.

L’entrée de la boucle de message modal COM efface tout objet d’erreur existant. Un objet appelé ne doit pas entrer de boucle de message après avoir appelé SetErrorInfo.

Exemples

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

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll