多维SAFEARRAY自定义编组

时间:2013-04-25 19:33:39

标签: .net com

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

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

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

0 个答案:

没有答案