dll共享数据段的问题

mszjk 2009-03-15 07:40:14
在dll中设置hook为共享的跟非共享的有什么区别?
比如
#pragma data_seg("MySec")
HHOOK g_hKeyboard = NULL; // 设置共享
#pragma data_seg()

#pragma comment(linker, "/section:MySec, RWS") // 设置节共享读写

这跟直接
HHOOK g_hKeyboard = NULL;有什么区别么?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyonld 2009-03-20
  • 打赏
  • 举报
回复
前者意思是不管你切换到哪个窗口下,对你的钩子都能响应,也就是系统中的所有应用程序共享了这份数据
后者是只有在你的应用程序上才对钩子作出响应
你可以写个小程序试下
mszjk 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 greatws 的回复:]
有区别,全局HOOK的话,由于同一个DLL被多个进程加载,又由于进程间地址是相互独立的,所以非共享的HHOOK g_hKeyboard在每个进程中值是不同的,这就没法做到全局HOOK了
[/Quote]

能举个例子么?
野男孩 2009-03-15
  • 打赏
  • 举报
回复
1楼正解。

共享段的用处就是在所有的进程中,都是看到同一份数据。
greatws 2009-03-15
  • 打赏
  • 举报
回复
有区别,全局HOOK的话,由于同一个DLL被多个进程加载,又由于进程间地址是相互独立的,所以非共享的HHOOK g_hKeyboard在每个进程中值是不同的,这就没法做到全局HOOK了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧