Winapi 我需要在哪里切换激活上下文?
我面临的问题本质上是:Winapi 我需要在哪里切换激活上下文?,winapi,com,side-by-side,regfreecom,activation-context-api,Winapi,Com,Side By Side,Regfreecom,Activation Context Api,我面临的问题本质上是: 我有一个使用第三方进程内COM组件DLL的DLL 我想在进程内组件中使用免注册COM 我想在这个DLL中嵌入并使用manfest(而不是在主EXE中),这样我就可以以无注册的方式使用第三方组件 我从组件使用的接口通过调用CoCreateInstance激活 第三方COM组件没有任何进一步的(COM)依赖关系,不依赖或需要隔离 我发现简单地将清单嵌入到我的DLL中是行不通的,正如链接问题中所描述的,我需要手动切换 我不明白的是何时何地需要切换激活上下文:我是否只需要将对
- 我有一个使用第三方进程内COM组件DLL的DLL
- 我想在进程内组件中使用免注册COM
- 我想在这个DLL中嵌入并使用manfest(而不是在主EXE中),这样我就可以以无注册的方式使用第三方组件
- 我从组件使用的接口通过调用
激活CoCreateInstance
- 第三方COM组件没有任何进一步的(COM)依赖关系,不依赖或需要隔离
CoCreateInstance
的调用包装成(*)之类的格式,还是需要将所有调用包装到第三方组件中?(据我所知,这是应该帮助的。)
那么,当使用免注册COM时,您需要在哪里切换
(*):或
AFX_MANAGE_STATE(AfxGetStaticModuleState())代码>(**)或其他
(**):实际上,AFX\u MANAGE\u STATE
过去可以工作,但在“较新”的MFC版本中不再工作。参见,例如:
我们从MFC中删除了所有激活上下文支持,因为我们
.... 我们使用窗户
MFC本身内部具有隔离意识的API
//由Pat Brenner,Visual C++库开发:星期三,六月05, 2013 11:10PM
考虑到第三方组件没有其他依赖项,您只需要包装对CoCreateInstance
的调用
如果它有其他依赖项,那么您需要将调用包装到第三方组件中。包装CoCreateInstance
就足够了“…那么您需要将调用包装到第三方…”-也就是说,那些本身需要切换激活上下文的调用,即那些将触发的调用(类似于)CoCreateInstance
本身以及我希望通过切换上下文解决这些依赖关系的位置?@MartinBa这是正确的。我假设您并不总是知道哪些调用需要切换上下文,并且包装它们是最安全的。