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.
Dans mon code, j'ai donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 HRESULT fonctionDCOM(HRESULT** argument);
Avec ce bout de code la fonction échoue. Il n'y a pas d'erreur. Simplement SUCCEEDED(hr) retourne FALSE
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
Par contre, si je passe en paramètre un pointeur, cela fonctionne.
Avec ce bout de code la fonction réussit.
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
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.
++
Partager