打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
dll概述

   DLL应用程序的入口点是DllMain

对程序员来说,DLL应用程序的入口点是DllMain。

DllMain负责初始化(Initialization)和结束(Termination)工作,每当一个新的进程或者该进程的新的线程访问DLL时,或者访问DLL的每一个进程或者线程不再使用DLL或者结束时,都会调用DllMain。但是,使用TerminateProcess或TerminateThread结束进程或者线程,不会调用DllMain。

DllMain的函数原型符合DllEntryPoint的要求,有如下结构:

BOOL WINAPI DllMain (HANDLE hInst,

ULONG ul_reason_for_call,LPVOID lpReserved)

{

switch( ul_reason_for_call ) {

case DLL_PROCESS_ATTACH:

...

case DLL_THREAD_ATTACH:

...

case DLL_THREAD_DETACH:

...

case DLL_PROCESS_DETACH:

...

}

return TRUE;

}

其中:

参数1包含了DLL的实例句柄,这个值用于标识DLL的文件映像被映射到进程的地址空间中的虚拟内存地址

参数2是指调用DllMain的类别,四种取值:新的进程要访问DLL;新的线程要访问DLL;一个进程不再使用DLL(Detach fromDLL);一个线程不再使用DLL(Detach fromDLL)。

参数3保留。

如果程序员不指定DllMain,则编译器使用它自己的DllMain,该函数仅仅返回TRUE。

规则DLL应用程序使用了MFC的DllMain,它将调用DLL程序的应用程序对象(从CWinApp派生)的InitInstance函数和ExitInstance函数。

扩展DLL必须实现自己的DllMain。

必须记住:DLL使用DllMain函数来对他们进行初始化,当你的DllMain函数执行时,同一个地址空间中的其他DL可能尚未执行他们的DllMain函数,这就意味着他们尚未初始化,因此你应该避免调用从其他DLL中输入的函数。

 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于dll的一些事
DLL高级技术2
DLL木马的写法
Windows核心编程(第五版)笔记 第二十章 DLL高级技巧 (DLL Advanced...
DllMain详解
《Windows核心编程系列》二十谈谈DLL高级技术
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服