2010-09-29 3 views
2

Nous avons une application 32 bits qui s'interface avec un contrôle COM 64 bits. Afin de gérer l'interface, j'ai créé un objet COM 64 bits qui réside dans un serveur local (exe). Cet objet serveur local implémente la même interface que notre contrôle COM et passe simplement les appels. Tout fonctionne sauf pour les fonctions d'interface qui prennent en paramètre un VARIANT *. Je suppose que le problème est la différence de taille des pointeurs. Que puis-je faire pour résoudre ce problème?Passage du pointeur 32 bits au contrôle COM 64 bits

La variante * contient un BSTR. Voici l'extrait de l'IDL montrant l'appel de fonction:

[id(5), helpstring("method GetSystemInfo")] HRESULT GetSystemInfo([in] LONG InfoID, [in] LONG Channel, [in,out] VARIANT* InfoVal); 

Merci

Répondre

1

I figured it out. Lorsque je travaillais avec VARIANT, j'avais besoin de mettre v.bstrVal = NULL avant l'appel.

Questions connexes