如何让自己写的DLL只允许静态链接
如何让自己写的DLL只允许静态链接
楼主x_b_t_1(呆呆)2004-03-25 14:26:38 在 VC/MFC / 进程/线程/DLL 提问 别人使用LoadLibrary加载这个DLL时,让它加载不成功
谢谢
问题点数:100、回复次数:4Top
1 楼xstring(麻雀)回复于 2004-03-25 14:36:12 得分 100
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to the DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
);
通过DllMain函数中的第三个参数lpReserved,可以判断DllMain是如何被加载和卸载的
当fdwReason为DLL_PROCESS_ATTACH时,若lpReserved为NULL,则说明这个dll是用LoadLibrary动态加载,如果不是NULL则是静态加载的
当fdwReason为DLL_PROCESS_DETACH时,若lpReserved为NULL, 则说明这个dll正在用FreeLibrary卸载,如果不是NULL,说明程序正在结束
我说的这些来自MSDN,你也可以自己查查
Top
2 楼LeeZi(临渊羡鱼,不如退而结网)回复于 2004-03-25 14:54:05 得分 0
markTop
3 楼x_b_t_1(呆呆)回复于 2004-03-25 15:03:17 得分 0
谢谢~~~~
Top
4 楼ymbymb(毛病大哥)回复于 2004-03-25 15:11:16 得分 0
同意xstring
extern "C" BOOL WINAPI DllMain( HANDLE hModule,
DWORD 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:
break;
}
if(ul_reason_for_call == DLL_PROCESS_ATTACH && lpReserved == NULL) return FALSE;
else return TRUE;
}
Top
-
相关文章
