c++ - 注册 COM 接口(interface)的实现

标签 c++ windows com

我是 COM 编程的新手。我已经准备好一个 COM 对象(和关联的 IClassFactory),但我不太清楚如何注册生成的 DLL 以供其他程序使用。我也不清楚我需要携带多少 GUID。

我尝试注册的 COM 对象实现了 IAudioSessionEvents 接口(interface)。

我遇到过 DllRegisterServer 和 DllUnregisterServer 函数,但我没有找到任何关于它们用法的清晰演示。它们处理哪些键,如何调用它们,由什么以及何时调用等?

谢谢,
-凯文·蒙特罗斯

最佳答案

根据这篇文章,我不确定您是在实现还是使用支持 IAudioSessionEvents 的 DLL。如果您正在使用此 DLL,则可以使用注释行实用程序 regsvr32 注册该组件。注册使用:

regsvr32

注销:

regsvr32/u

regsvr32 应该在你的路径上,所以这个命令可以在任何目录下运行。

如果您要实现有问题的 DLL,则必须提供 DllRegisterServer 和 DllUnRegisterServer 函数的实现。这些函数必须为您的组件设置和清理注册表项。注册表项的目的是提供 ProgID,将其映射到 CLSID,并为组件支持的接口(interface)提供接口(interface) ID。例如,IAudioSessionEvent 的接口(interface) ID。如果您要实现 DLL,则必须提供代码来执行所有这些任务。

注意:这些函数由 regsvr32 调用以注册组件。

如果实际编写此代码非常不寻常,通常您会希望使用像 ATL 这样的框架,它会为您处理繁重的工作。如果您真的想从头开始了解 COM,那么至少编写一次此代码是一个很好的练习。

关于c++ - 注册 COM 接口(interface)的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712691/

相关文章:

windows - 我无法打开现有的 windows azure 项目

com - Windows Common Controls 6.0 组件 (MSCOMCTL.OCX) 的正确来源是什么?

delphi - EmptyParam 是变量,现在是函数 - 如何解析遗留代码?

C++ 计数动物和与基类的随机交互

asp.net - WaHostBootstrapper 不断退出并出现错误 WapXmlReadRoleModel=0x1

c++ - 有效输入迭代器的默认构造

python - win32com Excel数据输入错误

c++ - 为什么 VS 编译器会在对象内存中插入一个 NULL

c++ - 使用双击事件创建 QLabel 时出现链接器错误

c++ - 将 gprof 与 LULESH 基准结合使用