《windows核心编程》第三讲 内核对象(1)内核对象简介

      准确的理解内核对象对于想要成为一名Windows软件开发能手的人来说是至关重要的。内核对象可以供系统和应用程序使用来管理各种各样的资源,比如进程、线程和文件等。本讲就来介绍一下所有内核对象的特性,而并不针对某一特定类型的内核对象。

1.什么是内核对象

        关于内核对象的含义,著名的《Windows核心编程》如是说:系统要创建和操作若干类型的内核对象,比如存取符号对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。例如,CreateFileMapping函数可使系统能够创建一个文件映射对象。每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。

        看了上面这段内核对象的介绍你看懂了吗?反正Angela是不知道作者在讲什么,也许在了解了作者列举的几种内核对象之后会有个更直观的理解。但是上面的每个内核对象都可以用一章来介绍呀!!事实证明作者也在后面分不同的章节介绍了几种重要的内核对象。那么究竟该如何理解内核对象才能对这个概念建立一个更直观的理解呢。

        要理解内核对象要从windows操作系统的特性开始介绍(我们学习的正是Windows编程对吧)。

        Windows操作系统分为内核模式和用户模式,这是为了阻止应用程序访问或者修改相关的系统数据。用户程序的代码在用户模式下运行,系统程序(如系统服务程序和硬件驱动)的代码在内核模式下运行。当应用程序调用一个系统函数的时候,用户的应用程序会从用户模式切换到内核模式去执行。因此操作系统架构可以由以下示意图表达:

《windows核心编程》第三讲 内核对象(1)内核对象简介_第1张图片

        那说到现在跟内核对象有什么关系呢。事实上内核对象是系统提供的用户模式下代码与内核模式的代码进行交互的基本接口。因此得到内对象的几点特性:

  1. 内核对象是系统地址空间中的一个内存块,由系统创建并维护。
  2. 系统创建和使用多种类型的内核对象,如文件对象,事件对象,互斥对象,进程对象等等。
  3. 每个内核对象是内核分配的内存块,是一种数据结构,负责维护该对象的各种信息,而且只能由内核访问。
  4. 内核对象只能由系统控制,应用程序无法得到内核对象的内存空间。

        注意在这个过程中应用程序和系统之间的关系,应用程序只能通过调用特定的函数使系统创建内核对象。那用户该如何使用内核对象呢,这需要通过对象句柄来实现。下节将做详细介绍。

你可能感兴趣的:(windows程序设计)