在每一个DLL的入口函数(DllMain)中有着这样一个参数dwReason,这个参数表示着动态库当前所做的动作,对于这个参数,我们可以按如下方式来处理
BOOL WINAPI DllMain(
HANDLE hModule, // DLL所在的模块
DWORD dwReason, // 加载DLL的所进行的操作
PLONG plReserved)
{
switch (dwReason)
{
case DLL_THREAD_ATTACH: // 线程加载,
case DLL_PROCESS_ATTACH: // 进程加载,
case DLL_THREAD_DETACH: // 线程退出
case DLL_PROCESS_DETACH: // 进程退出
}
return TRUE;
}
在几个分支中可以分别做相应的处理。
有了这几个参数,我们就可以很方便的知道有哪些进程(线程)调用了我们的DLL