DLL的入口点函数

8 views
Skip to first unread message

Zeke

unread,
Nov 15, 2007, 6:21:44 AM11/15/07
to The World Of MATLAB
对于每个dll来说,都要有一个入口点,就像普通的函数要有main函数一样,进程装载或脱离dll时系统都要调用入口点函数。
当发生任何一种事件时,都会调用dll的入口函数。
1  一个进程装载dll时,对于使用装载是连接的进程,当进程初始化时,动态链接库开始装载,对于使用运行是连接的进程,动态链接库在LoadLibrary或LoadLibrary Ex函数返回之前调用。
2 一个进程脱离动态链接库时,当进程终止或调用FreeLibrary函数是参考数变为0时,动态链接库开始卸载。如果是调用了TerminateProcess和TerminateThread函数而导致的进程终止,则系统不会调用动态链接库的入口点函数。
3 装载了动态链接库的进程创建了另外的线程。
4 装载了动态链接库的进程中的一个线程正常终止。
动态链接库的入口点的DllMain函数结构如下:
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved)
{
switch(fswReason)
case DLL_PROCESS_ATTACH
......
case DLL_THREAD_ATTACH
.....
case DLL_THREAD_DETACH
.....
case DLL_PROCESS_DETACH
....
}
Reply all
Reply to author
Forward
0 new messages