我举例来说明一下句柄是什么
比如说HGDIOBJ
1. 结构:
它是一个32的数值,它的结构是:
8bits unknown | 1 bit stock object marker |7 bits object type| 4 bits unused| 12 bits index.
看到12bits的索引了吗?
2. object handle table.
我们刚才看到了索引,索引是指向哪里的呢,就是指向这个object handle table的,这个是
系统维护的一张表。
object handle table中的一项结构如下
typedef struct
{
void * pKernel;
unsigned short nProcess;
unsigned short nCount;
unsigned short nUpper;
unsigned short nType;
void * pUser;
} GdiTableCell;
我们可以看到其中有两个指针,这两个指针就是指向真正的对象。
比如说DC_ATTR,DCOBJ等真正的对象。
对象是什么,我想你该知道吧。