.Net - Com PVariant Param - PullRequest
       32

.Net - Com PVariant Param

1 голос
/ 14 октября 2010

Я немного застрял со странной проблемой.Мне нужно управлять некоторыми аппаратными средствами через стороннюю библиотеку типов Active-X.Моя программа написана на C #.Проблема в том, что для одного вызова API / COM требуется ссылка на PVariant - поэтому, если я правильно получу указатель на Variant.Что еще хуже, это всего лишь первый адрес массива Varaint с не фиксированным размером (количество элементов).

Проблема в том, что, кроме того, что это не лучшая практика, у меня нет шансов изменить этот методнет способа обойти это.

Кому-нибудь когда-нибудь нужно было создать COM-совместимый вариантный массив и передать его начальный адрес методу COM?Как это сделать?

Буду признателен за любую помощь в этом!

Спасибо за продвинутый

Corelgott

1 Ответ

0 голосов
/ 14 октября 2010

Вы пытались использовать System.Runtime.InteropServices.Marshal.GetNativeVariantForObject ?

Кроме того, теперь, когда я сделал пробежку по своей памяти, Variant Array (VT_ARRAY) действительно является БЕЗОПАСНЫМ для другогоназвание.Вы можете попробовать передать Object[], чтобы посмотреть, будет ли обрабатываться маршаллинг по умолчанию в .Net.

...