gpt4 book ai didi

winapi - 我需要在哪里切换激活上下文?

转载 作者:行者123 更新时间:2023-12-02 09:45:20 26 4
gpt4 key购买 nike

我面临的问题本质上是 described here ,即:

  • 我有一个使用第 3 方进程内 COM 组件 DLL 的 DLL。
  • 我想将免注册 COM 与该进程内组件一起使用。
  • 我想在这个 DLL 中嵌入并使用 list (而不是在主 EXE 中),以便我可以以无需注册的方式使用第 3 方组件。
  • 我在组件中使用的接口(interface)是通过调用 CoCreateInstance 激活的。
  • 第 3 方 COM 组件没有任何进一步的 (COM) 依赖项,并且不依赖或不需要隔离。

我发现简单地将 list 嵌入到我的 DLL 中是行不通的,正如链接问题中所述,我需要切换 Activation Context手动。

我不明白的是在哪里需要切换激活上下文:我是否只需要将对 CoCreateInstance 的调用包装在类似 CActCtxActivator ScopedContext 的内容中? (*),或者我需要将所有调用包装到第 3 方组件中吗? (据我所知,ISOLATION_AWARE_ENABLED 应该提供帮助。)

那么,使用免注册COM时,需要在哪里切换Activation Context

<小时/>

(*) : AFX_MANAGE_STATE(AfxGetStaticModuleState()); (**) 或其他。

<小时/>

(**):实际上,AFX_MANAGE_STATE 曾经可以工作,但在“较新”的 MFC 版本中不再有效。参见,例如VS2012: Removed support for active contexts switching in MFC? :

We removed all the activation context support from MFC because we.... We use the Windowsisolation aware APIs internally in MFC itself.

// posted by: Pat Brenner, Visual C++ Libraries Development: Wednesday, June 05, 2013 11:10 PM

最佳答案

鉴于第 3 方组件没有其他依赖项,您只需将调用包装到 CoCreateInstance 即可。

如果它有其他依赖项,那么您需要将调用包装到第 3 方组件中。

关于winapi - 我需要在哪里切换激活上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com