读书笔记(5)

 

解码GDI对象句柄

今天都是在探索GDI内部的结构,在微软的文档中并没有系统的记载,虽然我觉得很有道理,但到底是不是这样只有微软自己知道了

 

(1)先看一下GDI句柄的定义,如HPEN是这样定义的

如果STRICT已经被定义了

struct HPEN_ {intunused;};

typedef struct HPEN_ * HPEN;

如果STRICT没有定义,HPEN是这样定义的

typedef void * HANDLE;

typedef HANDLE HPEN;

坦白的说,如果定义了STRICT宏,HPEN是指向有单个未使用字段的结构的指针,否则HPEN是空指针。

 

。。。。。。。。然后本书作者经过一系列的探索,利用了一个复杂的程序,列出的GDI中部分句柄的一些信息,如内存地址,函数

 

名和序列。。。。。。

 

总之,最后得出了一些结论(根据内存地址)

 

32位的GDI句柄由8位未知的高位、1位堆对象标记、7位对象类型信息和高4位是0的16位索引组成。借助7位对象类型信息,可以确定

 

设备上下文、区域、位图、调色板、字体、画刷、加强型图元文件、画笔和扩展画笔。

如下图

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值