不存在类型库信息时,可以通过两种基本策略使用 COM 组件:
- 使用组件的 SDK(或文档)中的头文件生成(或合成)用于组件接口的接口定义语言(IDL)文件。IDL 文件是生成 TLB 的源文件。微软提供 IDL 编译器(MIDL.exe),直接生成 TLB 信息。
- 为每个非托管 COM 组件编写托管 C++ 包装程序类。这种方法依赖于 C++ 的独特能力,即使用微软称之为 IJW 的一项技术来跨越旧/新世界的界限(它的确很有用)。
尽管这两种方法都是可行的,但移动参考模型第 II 阶段还是选择了第二种方法,因为它符合微软在处理 DirectX API 技术方面的方向。几乎所有 DirectX 子系统都已经支持"托管 API"。不幸的是,DirectX 9 没有为 DirectShow 提供这样的扩展。
通过采用方法 2,我们可以预测最终托管 DirectShow 的性能。在任何情况下,这种技术都很直接有效,而且能够为旧式 COM 和 .NET 之间互操作性的常见问题起到示范作用。