Интерфейс Python с C# COM dll - com_record не работает как параметр [Out]

Я запускаю скрипт Python для взаимодействия с aC# dll, зарегистрированным как приложение com, и испытываю трудности с обработкой выходного параметра структуры. Я создаю запись COM и успешно передаю ее в вызов функции COM, но данные не меняются.

Моя функция C# объявлена ​​как

void GetData(ref MyData data);

MyData является структурой, и запись в файле tlh генерируется как

  virtual HRESULT __stdcall GetData (
    /*[in,out]*/ struct MyData * data ) = 0;

В скрипте Python я объявляю

self.myData = win32com.client.Record("MyData", self.myComServerObj)

И вызвать функцию

self.myComServerObj.GetData(self.myData)

Но элементы данных в self.myData остаются неизменными после вызова функции.

Я могу отладить вызов функции на стороне сервера и подтвердить, что данные меняются, а также назначить тестовые значения на стороне клиента и подтвердить, что они принимаются сервером. То есть параметр struct работает нормально как параметр [In], но не как параметр [out].

Я также могу подтвердить, что эта функция хорошо работает с клиентской программой "C" COM. Кто-нибудь может помочь?

Благодарю.

0 ответов

Другие вопросы по тегам