首页
社区
课程
招聘
[求助]请教一下如何实现DLL自卸载
发表于: 2010-12-29 00:13 5719

[求助]请教一下如何实现DLL自卸载

2010-12-29 00:13
5719
在win7下,我在dllmain中,通过CreateThread调用FreeLibrary来释放dll自身,崩溃了。直接在dllmain中调用FreeLibrary来卸载自己也不行,不知有什么解决方案?多谢了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个思路明显不对,自杀也要借他人之手啊。
2010-12-29 01:11
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我试过这样是成功的。。在dllmain中创建了一个线程。在线程里创建了窗体。。并调用了消息循环。。窗体里有个button 在button里调用 FreeLibraryAndExitThread没有出现崩溃。。。HMODULE hModule,
如果你第一个参数传的是实例句柄那记得强制转换。一下。。貌似我测试的时候如果不转换。是卸载不了的
2010-12-29 02:03
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你dll是怎么加载的?貌似dll引用计数没有了就自动卸载了
2010-12-29 04:00
0
雪    币: 185
活跃值: (86)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
1, FreeLibraryAndExitThread 只有你确保你的dll ref count 是1的情况下才有效,很多情况下不成立
当然改进的思路就是写ldr data的ref count 为1再调这个api, 不过这引入了对ldr 数据结构的依赖.
2, 自己开一个thread去释放它,while (freelibrary(name)..., 当然要自己清理这个thread的
2010-12-29 10:59
0
游客
登录 | 注册 方可回帖
返回
//