注册 COM 接口的实现

2024-04-12

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

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

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

Thanks,
-凯文·蒙特罗斯


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

regsvr32

取消注册:

regsvr32 /u

regsvr32 应该位于您的路径上,因此该命令可以在任何目录中运行。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册 COM 接口的实现 的相关文章

随机推荐

  • 将图像包装在 Bootstrap 行的链接中

    我花了比我愿意承认的更多的时间来尝试让一行图像成为可点击的链接row使图像在中间对齐row that 不会破坏 Bootstrap 响应能力 链接工作正常 但由于图像尺寸的变化 尽管它们都是紧凑高度的景观 对齐方式被关闭 我可以让图像在内部
  • Pygame 蛇吃自己

    我最近开始使用 pygame 并且正在关注 TheNewBostons 的 YouTube 教程 这是我的主要游戏循环 def game loop global direction global tdirection lead x disp
  • “UTF-16”和“std::wstring”有什么区别?

    这两种字符串存储格式有什么区别吗 std wstring是一个容器wchar t 的大小wchar t未指定 Windows 编译器倾向于使用 16 位类型 Unix 编译器倾向于使用 32 位类型 UTF 16 https en wiki
  • 为什么应用于实例的 Python 帮助函数在某些情况下返回有关父类的页面,而在其他情况下则不返回?

    我试图了解当使用帮助函数来询问在我的代码中创建的对象时如何获得有用的结果 我对不同班级的不同行为感到困惑 Cls1 type FirstClass str doc My new class inst1 Cls1 Hello World Cl
  • 强制 target_link_libraries 使用 C++ 链接器

    TL DR 将静态 c 库链接到 c 可执行文件时 有没有办法强制 cmake 使用 c 链接器 我有一个静态库 由 2 个对象组成 一个 C 文件和一个该文件中函数的 C 包装器 构造函数 析构函数和打印函数 类似于this https
  • 最高连续出现次数的总和

    我有一个包含三列的表 lending id int installment n serial int status text 我想知道如何检索最大的差距WAITING PAYMENT status 对于每个贷款 id 对于以下示例 lend
  • Django - 切换模板渲染的语言设置[重复]

    这个问题在这里已经有答案了 可能的重复 Django 切换 对于一段代码 切换语言 以便以一种语言完成翻译 https stackoverflow com questions 5258715 django switching for a b
  • 评估项目“:app”时出现问题。 > 无法对 null 对象调用 getAbsolutePath() 方法

    我面临着 React Native 构建的问题 无法进一步进行 并且在任何地方都找不到解决方案 这是我的 build gradle 文件 import org apache tools ant taskdefs condition Os b
  • 如何在cmd中显示阿拉伯字母

    任何人都可以提供我的解决方案以在cmd中显示阿拉伯字母 我尝试在 cmd 中使用 chcp 1256 和 chcp 62001 但它没有正确显示阿拉伯字母 但是当我在互联网上搜索时 我发现有人说有解决方案 但它需要 Windows 95 或
  • 如何使用 Polars 按值列表过滤 df?

    我有来自 csv 的 Polars df 我尝试按值列表过滤它 list 1 2 4 6 48 df pl read csv bm dat sep new columns cid1 cid2 cid3 lazy filter pl col
  • 有没有办法在 tomcat6 中强制执行部署顺序?

    我的 webapp 文件夹中有 3 场战争 其中两个是建立在第三个的服务之上的 我处于测试环境中 即我无法控制他们的架构 所以我无法改变任何事情 所以 Question 有没有办法在 tomcat 中强制执行部署顺序 我遇到了一个问题her
  • Android:使用 Google API 进行实时导航,还是与 Google 地图通信?

    我知道以前有人问过这个问题 但我找不到满意的答案 是否可以从 Android 可用的 Google API 获取实时方向更新 Google Maps API 仅提供视觉功能 但不提供任何方向功能 Google Directions API
  • 如何将 javax.xml.transform.Source 转换为 InputStream?

    我怎样才能转换javax xml transform Source进入输入流 实施Source is javax xml transform dom DOMSource Source inputSource messageContext g
  • MSVC constexpr 函数“xyz”无法生成常量表达式

    我创建了一个函数 它将多个较小的值连接成一个较大的值 同时保留值的二进制表示 例如构建一个int argb来自多个unsigned char r g b a 我知道我也可以通过改变值来实现这一点 但这不是这个问题的问题 但是 如果我使用该函
  • Rails:用空对象模式替换 try

    在我的大多数应用程序中 我都有一个current user方法 为了避免在类似情况下出现异常current user name where current user is nil rails 提供了try方法 问题是我需要记住使用try无论
  • 声明普通类和类模板的静态数据成员

    我读到在源文件中定义静态数据成员的原因是因为如果它们位于头文件中并且多个源文件包含头文件 定义将多次输出 我可以理解为什么这对于静态常量数据成员来说是一个问题 但是为什么这对于静态数据成员来说是一个问题呢 我不太确定我完全理解如果定义写在头
  • 如何在django过滤器中做小于或等于和大于等于?

    如何在django过滤器中做小于或等于和大于等于 就像 我想获得周围的价值 10 lt val lt 50在 Django 视图中 为此 我在 sql 中使用了一些查询 如下所示 select count from table name w
  • Linux 中的直接内存访问

    我正在尝试直接访问嵌入式 Linux 项目的物理内存 但我不确定如何最好地指定内存供我使用 如果我定期启动设备并访问 dev mem 我就可以轻松地读写任何我想要的位置 然而 在这里 我访问的是可以轻松分配给任何进程的内存 我不想做 我的
  • Google Dataproc 上的 Spark UI 位于何​​处?

    我应该使用什么端口来访问 Google Dataproc 上的 Spark UI 我尝试了端口 4040 和 7077 以及我发现使用的许多其他端口netstat pln 防火墙配置正确 Dataproc 在 YARN 之上运行 Spark
  • 注册 COM 接口的实现

    我是 COM 编程新手 我已经准备好了一个 COM 对象 以及关联的 IClassFactory 但我不太清楚如何注册生成的 DLL 以供其他程序使用 我也不清楚需要携带的 GUID 数量 我尝试注册的 COM 对象实现了 IAudioSe