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 |