关于DEBUGHOOKINFO结构体的问题(DEBUG HOOK的结构体)

六道佩恩 2020-05-31 10:05:02
这个结构体有两个成员在MSDN上的描述是:
idThread
Type: DWORD
A handle to the thread containing the filter function.

idThreadInstaller
Type: DWORD
A handle to the thread that installed the debugging filter function.

说它们是线程的句柄,可要是线程的句柄的话,为什么是DWORD,不是HANDLE?

根据类型DWORD,以及成员的名称中带有一个“id”,所以我觉得它们是线程的标识。

不知道哪个是正确的?
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2020-06-04
  • 打赏
  • 举报
回复
引用 8 楼 六道佩恩 的回复:
[quote=引用 6 楼 zgl7903 的回复:] id 说明了就是线程ID 句柄的话一般不会用指针类型, 尽可能兼容64位系统
这些头文件里句柄的原型不就是指针吗? 如果是线程ID的话,那么就是MSDN的说明错了,是吧?[/quote] 抱歉, 误写, 本来是想说句柄不会用DWORD,用指针,尽可能兼容64为系统
六道佩恩 2020-06-03
  • 打赏
  • 举报
回复
引用 3 楼 Yofoo 的回复:
按句柄的本质来看,应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少
句柄的本质就是指针啊,这是几个头文件中对句柄的定义: ntdef.h: typedef void *HANDLE; ntdef.h: typedef PVOID HANDLE; winnt.h: typedef void *HANDLE; winnt.h: typedef PVOID HANDLE; wtypesbase.h: typedef void *HANDLE; 你不能根据它值的大小来说事啊,你对变量取地址得到的值一般也不到4字节上限,但显然不能因为它的值总是在4字节以内而拿4字节整型来存储吧?
zgl7903 2020-06-03
  • 打赏
  • 举报
回复
id 说明了就是线程ID 句柄的话一般不会用指针类型, 尽可能兼容64位系统
gouyanfen 2020-06-03
  • 打赏
  • 举报
回复
引用 4 楼 六道佩恩 的回复:
[quote=引用 3 楼 Yofoo 的回复:] 按句柄的本质来看,应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少
句柄的本质就是指针啊,这是几个头文件中对句柄的定义: ntdef.h: typedef void *HANDLE; ntdef.h: typedef PVOID HANDLE; winnt.h: typedef void *HANDLE; winnt.h: typedef PVOID HANDLE; wtypesbase.h: typedef void *HANDLE; 你不能根据它值的大小来说事啊,你对变量取地址得到的值一般也不到4字节上限,但显然不能因为它的值总是在4字节以内而拿4字节整型来存储吧?[/quote] 要学习内核知道,要学会用windbg,OD等调试工具而不是强行理解,强行解释。
gouyanfen 2020-06-03
  • 打赏
  • 举报
回复
引用 7 楼 六道佩恩 的回复:
[quote=引用 5 楼 gouyanfen 的回复:] 要学习内核知道,要学会用windbg,OD等调试工具而不是强行理解,强行解释。
您能给出解答吗?[/quote] 怎么还在这里如果呢,你弄个双机调试,去调试一下,看看他指向的东西具体是句柄还是id。我给你解释不了这个,我也没用到这个结构。
六道佩恩 2020-06-03
  • 打赏
  • 举报
回复
引用 6 楼 zgl7903 的回复:
id 说明了就是线程ID 句柄的话一般不会用指针类型, 尽可能兼容64位系统
这些头文件里句柄的原型不就是指针吗? 如果是线程ID的话,那么就是MSDN的说明错了,是吧?
六道佩恩 2020-06-03
  • 打赏
  • 举报
回复
引用 5 楼 gouyanfen 的回复:
要学习内核知道,要学会用windbg,OD等调试工具而不是强行理解,强行解释。
您能给出解答吗?
Yofoo 2020-06-02
  • 打赏
  • 举报
回复
按句柄的本质来看,应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少
六道佩恩 2020-06-02
  • 打赏
  • 举报
回复
引用 1 楼 Yofoo 的回复:
变量命名每个人习惯不一样, msdn也是人写的, 应该以说明为准 对于DWORD,HANDLE, 在内核来说都是一样的东西, 很多系统底层的东西都是这样
你的意思应该认为是句柄? 按句柄的本质来看,应是8字节的指针,而DWORD只有4字节,怎么也不可能是句柄吧,既然是人写的,我是认为他们写错了
Yofoo 2020-06-01
  • 打赏
  • 举报
回复
变量命名每个人习惯不一样, msdn也是人写的, 应该以说明为准 对于DWORD,HANDLE, 在内核来说都是一样的东西, 很多系统底层的东西都是这样

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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