debug : CoInitialize执行的时机
发布日期:2021-06-30 22:16:57 浏览次数:2 分类:技术文章

本文共 454 字,大约阅读时间需要 1 分钟。

BUG现象:

  注入DLL使用COM接口, 被注入的程序也使用COM接口.

  在注入DLL的DLL_PROCESS_ATTACH调用CoInitialize, DLL_PROCESS_DETACH中调用CoUninitialize.

  导致被注入的DLL宿主程序COM接口使用不正常.

BUG原因:

  MSDN中对于COM初始化函数是这样描述的:

  Because there is no way to control the order in which in-process servers are loaded or unloaded,

  do not call CoInitialize, CoInitializeEx, or CoUninitialize from the DllMain function.

解决方法:

  在注入DLL中, 需要调用COM接口时. COM初始化 => 调用COM接口 => COM反初始化.

这个BUG, 出现在我负责的组件中, 同事帮找出原因的, 他们看文档真仔细. 很佩服.

转载地址:https://lostspeed.blog.csdn.net/article/details/7927176 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:debian7, debian8's syslog config, open all log level
下一篇:make linux installer

发表评论

最新留言

不错!
[***.144.177.141]2024年04月18日 16时03分10秒