关于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”,所以我觉得它们是线程的标识。

不知道哪个是正确的?
...全文
218 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,020

社区成员

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

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