首先让我解释什么叫做“核心对象”(kernel object)。“GDI对象”是大家比较熟悉的东西,我们利用GDI函数所产生的一支笔(pen)或一支刷(brush)都是所谓的“GDI对象”。但什么又是“核心对象”呢?
你可以说核心对象是系统的一种资源(噢,这说法对GDI对象也适用),系统对象一旦产生,任何应用程序都可以开启并使用该对象。系统给予核心对象一个计数值(usage count)作为管理之用。核心对包括下列数种:
| 核 心 对 象 | 产 生 方 法 |
| event | CreateEvent |
| mutex | CreateMutex |
| semaphore | CreateSemaphore |
| file | CreateFile |
| file-mapping | CreateFileMapping |
| process | CreateProcess |
| thread | CreateThread |
前三者用于线程的同步化:file-mapping对象用于内存映射文件(memory mapping file),process和thread对象则是本节的主角。这些核心对象的产生方式(也就是我们所使用的API)不同,但都会获得一个handle作为识别;每被使用一次,其对应的计数值就加1。核心对象的结束方式相当一致,调用CloseHandle即可。
“process对象”究竟做什么用呢?它并不如你想象的那样,用来“执行程序代码”;不,程序代码的执行是线程的工作,“process对象”只是一个数据结构,系统用它来管理进程。
博客介绍了核心对象,指出它是系统资源,任何应用程序可开启使用,系统用计数值管理。核心对象包括用于线程同步化的file - mapping、process和thread对象等,产生时获handle识别,使用计数值加1,结束调用CloseHandle。还说明process对象是用于管理进程的数据结构。
809

被折叠的 条评论
为什么被折叠?



