关于Windows内核对象句柄在进程空间内的存储

当一个进程被初始化时,系统会为它分配一个句柄表。该句柄表只用于内核对象(简单的说就是由CreateFile, CreateMutex, CreateXXXX这类函数创建的对象),不用于用户对象或G D I 对象。

下表显示了进程的句柄表的样子,它是个数据结构的数组。每个结构都包含一个指向内核对象的指针、一个访问屏蔽和一些标志。

索引内核对象内存块的指针访问屏蔽(标志位的D W O R D )标志(标志位的D W O R D )
10 x ? ? ? ? ? ? ? ?0 x ? ? ? ? ? ? ? ?0 x ? ? ? ? ? ? ? ?
20 x ? ? ? ? ? ? ? ?0 x ? ? ? ? ? ? ? ?0 x ? ? ? ? ? ? ? ?
............

 

创建内核对象时获得的HANDLE值 如hFile, 进行右移2位(hFile>>2),得到的即是表中的索引值,所以调试程序时常看到句柄值为偶数结尾。不同进程中直接传递HANDLE是无意义的, 内核对象的内存指针并没有传递过去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值