核心对象

首先让我解释什么叫做“核心对象”(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),processthread对象则是本节的主角。这些核心对象的产生方式(也就是我们所使用的API)不同,但都会获得一个handle作为识别;每被使用一次,其对应的计数值就加1。核心对象的结束方式相当一致,调用CloseHandle即可。

 

    process对象”究竟做什么用呢?它并不如你想象的那样,用来“执行程序代码”;不,程序代码的执行是线程的工作,“process对象”只是一个数据结构,系统用它来管理进程。

你可能感兴趣的:(核心对象)