0

我有一个返回多维 SAFEARRAY 的 COM 接口。例如:

[
    object,
    dual,
    uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
]
interface ISomeInterface : IDispatch
{
    [id(1)] HRESULT GetSafeArray([out, retval] SAFEARRAY(VARIANT)* multidimensionalSafeArray);
}

我在尝试使用 .NET 中返回的 SAFEARRAY 时遇到了一个问题,因为它们的尺寸是倒置的。我不明白为什么默认封送拆收器不翻转它们的尺寸。据我所知,解决这个问题的唯一方法是编写我自己的自定义封送器。但由于也有返回 SAFEARRAY 的 COM 接口有其他维度计数(一维、二维、三维)和其他类型(DATE、CY、long、double 等),我需要找到一个通用的解决方案. 我是否正确理解我必须编写所有编组操作来编组我的各种 SAFEARRAY 元素类型(blittable 类型、DATE、CY、IDispatch、IUnknown 等)?

4

0 回答 0