内核对象、GDI对象、user对象
这些对象使用 句柄 来标识,通过操作这些句柄就使用不同的资源对象
和堆内存一样,程序员也需要管理这些对象资源,以免造成资源浪费
句柄( handle)是windows用来标识被应用程序所建立
或使用的对象的唯一证书,windows使用
各种各样的句柄标识诸如应用程序实例、
窗口、控制、位图、GDI对象。‘
句柄实际上是一种指向某种资源的指针,单与指针又有所不同:指针对应着
一个数据在内存中的地址,得到了指针就可以自由的修改该数据,’
内核对象是不属于进程的,是属于windows内核的
进程只有一个内核对象句柄表,用来存放所有内核对象句柄
所以,多个进程可以同时使用一个内核对象。
对于GDI对象和user对象,他们是一个进程内部拥有的东西,不会被多个进程共有
GDI对象与绘图相关,user与交互相关。
内核对象的直接拥有这是操作系统内核,所有进程共享这些内核对象
因此要有一种机制保证内核对象的正确构建、销毁】windwos采用引用计数的技术;
内核对象维护这一个医用计数成员
一个进程创建了一个内核对象,对象的引用计数为1,如果该对象又被另外的进程共享,每多一个进程,引用计数就会加一,当一个进程调用closehandle函数后,引用计数会减一
如果引用计数变为0,操作系统会撤销该内核对象