0

根据https://docs.microsoft.com/en-us/windows/desktop/api/vsbackup/nl-vsbackup-ivssexaminewritermetadata

IVssExamineWriterMetadata 接口是一个C++(不是 COM)接口,允许请求者检查特定写入器实例的元数据。此元数据可能来自当前正在执行的(实时)编写器,或者它可能已存储为 XML 文档。

我看到的所有代码都将其视为 COM 接口。

这个定义对我来说就像 COM。

https://github.com/candera/hobocopy/blob/master/inc/winxp/vsbackup.h#L91

这里有什么区别?它是否以某种记录方式违反了 COM 接口设计规则?

4

1 回答 1

0

我的猜测是编写此代码、文件和相关文档的人可能不知道 COM 是什么,所以他们带来了自己的困惑。

例如,它们在同一接口(例如 IVssBackupComponents)中使用 BSTR(自动化)和 LPCWSTR(原始)参数类型的组合,这很奇怪。

这是 COM,原始 COM,因为 COM 本质上非常简单。您可以使用任何语言以多种方式定义 COM 虚表,这就是它的美妙之处(不是说 IDispatch、类型库、MIDL、线程、注册表、类工厂、进程外、编组等)。

对于另一个原始 COM 示例,请查看 DirectX:使用 COM 编程 DirectX写得很好,并谈到了他们所谓的“原始 COM”。

于 2019-05-19T06:41:29.477 回答