[C#/COM]décallage de la valeurs des param lors d'appel COM

décallage de la valeurs des param lors d'appel COM [C#/COM] - C#/.NET managed - Programmation

Marsh Posté le 18-08-2006 à 14:06:34    

voici la signature de la fonction de l'objet COM que j'appelle et la description que j'en ai faite pour l'interfaçage

Code :
  1. virtual HRESULT GetResultInfo(unsigned int _res, DLLRESULT * _dllResult) = 0;
  2.         [PreserveSig]
  3.         int GetResultInfo(
  4.             [In] uint res,
  5.             [In] ref DLLRESULT _dllResult
  6.             );


quand j'appelle cette fonction depuis mon code C# et que je donne par exemple la valeur 17 à _res, dans l'objet COM c'est *_dllResult qui a la valeur 17... d'ou peut venir ce décallage ? :|

Reply

Marsh Posté le 18-08-2006 à 14:06:34   

Reply

Marsh Posté le 21-08-2006 à 18:20:22    

La seule raison plausible que je vois, c'est que ta structure n'est pas conforme à ce qui est attendu.
Je suis pas un expert, mais t'es sûr de tes flags ?
T'es sur de l'ordre des champs ?
Y'as pas un autre sample sur le net qui tourne avec une autre structure que tu pourrais essayer, histoire de voir si c'est ton implémentation qui foire ?

Reply

Marsh Posté le 22-08-2006 à 11:11:41    

les flags je n'en suis pas certain, mais je me suis inspiré de la librairie directshownet
l'odre des params est bon
à priori la struct est passée par référence, donc on a un entier non signé de 32 bits et une adresse de 32 bits

Reply

Marsh Posté le 22-08-2006 à 12:01:06    

Mouaip... je vois pas trop.
T'as accès à la partie COM ? Si oui, je serais toi, j'essayerais de faire un pti programme qui teste la taille (sizeof) de la structure complète ainsi que des chacune de ses partie. Et du côté C# aussi.
 
C'est quoi le flag PreserveSig, j'ai bien compris dans la doc ?
T'as essayé sans ?

Reply

Marsh Posté le 22-08-2006 à 13:16:28    

_Mose_ a écrit :

Mouaip... je vois pas trop.
T'as accès à la partie COM ? Si oui, je serais toi, j'essayerais de faire un pti programme qui teste la taille (sizeof) de la structure complète ainsi que des chacune de ses partie. Et du côté C# aussi.
 
C'est quoi le flag PreserveSig, j'ai bien compris dans la doc ?
T'as essayé sans ?


ce flag concerne la valeur de retour, une question d'inversion de signe ou je ne sais plus exactement... il est utilisé sur toute la librairie directshownet
j ai acces au code COM, mais vu que le pointeur sur la structure a la valeur de l int que je met en parameetre... :| je vais tester quand meme ^^

Reply

Marsh Posté le 22-08-2006 à 19:16:22    

Bah sinon, tu peut essayer de passer une structure légèrement différente, genre avec deux int, puis avec deux adresse, histoire de voir si t'as encore des décalages.
Y'a ptet qu'un seul de deux types qui merde.
Si ca merde tout le temps, c'est que le pb vient d'ailleurs :)
 
(Pitain je me sens trop utile moi :))

Reply

Marsh Posté le 23-08-2006 à 10:27:10    

ben en tout cas c'est gentil d'essayer, je sais pas comment je fais pour avoir des bugs comme ça moi ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed