Передача 32-битного указателя на 64-битное управление COM - PullRequest
2 голосов
/ 29 сентября 2010

У нас есть 32-битное приложение, которое взаимодействует с 64-битным COM-контролем.Чтобы обработать интерфейс, я создал 64-битный COM-объект, который находится на локальном сервере (exe).Этот объект локального сервера реализует тот же интерфейс, что и наш элемент управления COM, и просто передает вызовы.Все работает, кроме тех интерфейсных функций, которые принимают VARIANT * в качестве параметра.Я предполагаю, что проблема в разнице в размерах указателей.Что я могу сделать, чтобы решить эту проблему?

Variant * содержит BSTR.Вот фрагмент из IDL, показывающий вызов функции:

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

Спасибо

1 Ответ

1 голос
/ 30 сентября 2010

Я понял это. При работе с VARIANT мне нужно было установить v.bstrVal = NULL до вызова.

...