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中最好只进行最简单的初始化工作。

        

 

你可能感兴趣的:(工作,function,application,文档,callback,化工)