DllMain, 实现之前先看清楚文档

DllMain, 实现之前先看清楚文档

 

微软文档的质量是很不错的,需要强调的地方基本上都写的很清楚。可是总有一些人写代码不仔细看文档,埋了许多地雷自己都不知道。

 

         DllMain函数和其他函数实现起来相比,有许多需要注意的地方,MSDN中说的很清楚。

         DllMain Callback Function介绍的Remarks部分:

         http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx

         Best Practices for Creating DLLs

         http://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx

         总之要非常小心,防止死锁,防止被调用函数依赖的动态库还没有加载。

        

         最近遇到一个问题,客户机器登录之后就重启,无法使用。重启是由winlogon导致的,windbg内核调试和Application Verifier分析发现,一个组件竟然在DllMain中调用了CoInitializeCoUninitialize,结果导致winlogon释放Com接口时出现异常。CoInitialize的文档中说的很清楚,不要在DllMain中调用CoInitializeCoInitializeEx CoUninitialize。实际的初始化逻辑工作根本没有必要放在DllMain中,DllMain中最好只进行最简单的初始化工作。

        

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值