首页
社区
课程
招聘
[旧帖] [求助]::FreeLibrary(hDll)之后,hDll的值为NULL还是INVALID_HANDLE_VALUE? 0.00雪花
发表于: 2012-9-10 19:04 1963

[旧帖] [求助]::FreeLibrary(hDll)之后,hDll的值为NULL还是INVALID_HANDLE_VALUE? 0.00雪花

2012-9-10 19:04
1963
题目如题。
我一个程序需要判断一个dll是否加载或卸载了,如果没有加载就返回错误。

我现在只知道判断下::LoadLibrary(hDll)中的hDll是否有效,
可是我不知道这个hDll在卸载了之后的值是NULL还是INVALID_HANDLE_VALUE

我晕,我应该自己写个程序判断下。  算了,帖子还是发了吧,等下我把判断结果发出来

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
貌似不是INVALID_HANDLE_VALUE,
直接给一个HINSTANCE赋值为INVALID_HANDLE_VALUE都失败了。

看下是不是为NULL吧。
2012-9-10 19:08
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚刚试了下,FreeLibrary成功之后,被卸载的HINSTANCE也不为NULL
2012-9-10 19:19
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
刚把hDll强制转换成DWORD打印出来,发现卸载完之后的hDll的值仍然为加载成功之后的值,但是再使用那个dll的导出函数就会失败。

应该是hDll对应的内核对象被系统销毁了。
2012-9-10 19:50
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
微软说过,dll加载了,不用free,free由系统去做。
2012-12-31 17:46
0
雪    币: 227
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
hDll的值不变,因为hDll只是你程序里声明的一个变量而已,FreeLibrary只通过这个变量的内容来释放对应的动态链接库,释放完后hDll的值不变,但也不再有任何意义。

Free完之后应该手动加上hDll = INVALID_HANDLE_VALUE;避免后面再误用这个变量。
2012-12-31 22:25
0
雪    币: 3
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
向大神们学习学习
2012-12-31 22:40
0
雪    币: 22
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个问题无不太清楚啊!
2012-12-31 23:13
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
微软官方说过,load的DLL,不需要释放,由系统自动处理。
2013-1-4 22:16
0
游客
登录 | 注册 方可回帖
返回
//