Bonjour,

je développe un client DCOM. Dans ce client, j'initialise une interface, puis j'appelle une méthode de cette interface. Cette méthode demande en paramètre un pointeur de pointeur et retourne une valeur hr de type HRESULT.
Je teste ensuite cette valeur avec la méthode SUCCEEDED(hr) pour savoir si ma fonction s'est bien déroulée.
TRUE est retournée en cas de succès et FALSE en cas d'échec.

Comme je le disais la méthode attend un pointeur de pointeur de type HRESULT qui est en fait un tableau de valeur HRESULT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
HRESULT fonctionDCOM(HRESULT** argument);
Dans mon code, j'ai donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
HRESULT** args;
hr=fonctionDCOM(args);
if SUCCEEDED(hr) {
     //Reussite
}
else //Echec
Avec ce bout de code la fonction échoue. Il n'y a pas d'erreur. Simplement SUCCEEDED(hr) retourne FALSE

Par contre, si je passe en paramètre un pointeur, cela fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
HRESULT *args;
hr=fonctionDCOM(&args);
if SUCCEEDED(hr) {
     //Reussite
}
else //Echec
Avec ce bout de code la fonction réussit.
SUCCEEDED(hr) retourne TRUE

Est-ce que quelqu'un a une explication ?
Cela vient certainement d'une incompréhension de ma part sur les pointeurs parce que selon moi, le résultat de mes deux bouts de code est le même. Non ?

Merci d'avance.
++