《Windows核心编程系列》谈谈内核对象及句柄的本质
作者:网络转载 发布时间:[ 2012/8/30 11:36:32 ] 推荐标签:
跨进程共享内核对象方法之三:复制对象句柄
实现该方法使用的是Duplicatehandle函数。
bool DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
PHANDLE phTargethandle
DWORD ddwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);
这个函数的功能是获得进程句柄表的一个记录项,然后在另一个进程中创建这个记录项的副本。第一个和第三个参数分别标识源进程和目标进程内核对象句柄。第二个参数标识要复制的内核对象句柄,它可以指向任何类型的内核对象。第四个参数是一个目标句柄的地址,用来接收复制到的HANDLE值。
函数将源进程中的句柄信息复制到目标进程所标识的句柄表中。第五第六个参数用以指定此内核对象句柄在目标进程句柄表中应该使用何种访问掩码和继承标志。
dwOption参数可以是DUPLICATE_SAME_ACCESS和DUPLICATE_CLOSE_SOURCE任一个。如果是DUPLICATE_SAME_ACCESS标志,将向DuplicateHandle函数表明我们希望目标句柄拥有与源进程句柄一样的访问掩码,此时会忽略dwDesiredAccess。如果是DUPLICATE_CLOSE_SOURCE标志,会关闭源进程的句柄,此时将一个内核对象从一个进程复制到另一个进程,但是内核对象的使用计数不受影响。
GetCurrentProcess可以返回当前进程的句柄,但是它是一个伪句柄。其值为-1,GetCurrentThread返回的也是伪句柄其值为-2,它们并不在句柄表中而仅仅代表当前进程和当前线程。
这一章很抽象,原来学习的时候读了很多遍也不是很明白,后来干脆跳过去了,一段时间的学习之后再回来看看,发现竟然非常简单。所以有时候学习不能钻牛角尖该跳过跳过。随着学习的深入,你所站的高度、看问题的角度都会不一样。理解起来也会更容易!!!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11