1

我有点被一个奇怪的问题困住了。我需要通过第 3 方 Active-X 类型库控制一些硬件。我的程序是用 C# 编写的。问题是一个 API / COM 调用需要一个 PVariant 的引用 - 所以如果我正确地得到它一个指向 Variant 的指针。更糟糕的是,这只是不固定大小(元素计数)的 Varaint 数组的第一个地址。

问题是——除了这不是最佳实践之外——我没有机会改变这种方法,也没有办法解决它。

有人需要创建一个兼容 COM 的 Variant-array 并将它的起始地址传递给 COM 方法吗?这是怎么做的?

我将不胜感激任何帮助!

谢谢先进

科莱戈特

4

1 回答 1

0

Have you tried using System.Runtime.InteropServices.Marshal.GetNativeVariantForObject?

Also, now that I jogged my memory, a Variant Array (VT_ARRAY) is really a SAFEARRAY by another name. You could try passing in an Object[] to see if .Net's default marshalling will handle it.

于 2010-10-14T06:49:05.853 回答