COM 自动化结构与它们的包装器

COM Automation structures vs wrappers for them

我正在为 Windows API 开发一个 COM 包装器,它可以从那些没有原生 Windows API 支持的脚本语言中使用。所以我在考虑我应该在COM ATL项目中使用什么。 SAFEARRAY 还是 CComSafeArrayVARIANT 还是 CComVariant?或者任何其他结构或适当的包装器?

我使用这两种类型进行了测试,但在它们之间没有发现任何特殊的性能差异、使用问题或其他实现。

在 COM ATL 项目中使用哪个最好?例如,SAFEARRAYCComSafeArray?

接口和组件类必须使用 SAFEARRAYVARIANT。您不能拥有在其任何 COM-public 方法签名或属性中使用 CComSafeArrayCComVariant 的 COM 接口或对象。但是,您可以在组件类实现中使用CComSafeArrayCComVariant