内核对象

由网友(沵的笑帶著傷)分享简介:入程对于象有1个入程I D 、1个基原劣先级以及1个退出代码,而文献对于象则领有1个字节位移、1个同享模式以及1个关上模式。中文名内查对象使用教科物理抒发式有1个入程I D 、1个基原劣先级合用范畴规模计较机内查对象内查对象是体系供给的用户模式下代码取内核模式下代码举行接互的基原交嘴。内查对象的数据布局只可被内核拜候,是以使用...

进程对象有一个进程I D 、一个基本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。

中文名

内核对象

应用学科

物理

表达式

有一个进程I D 、一个基本优先级

适用领域范围

计算机

内核对象

内核对象的介绍

内核对象是系统提供的用户模式下代码与内核模式下代码进行交互的基本接口。

内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容。Microsoft 规定了这个限制条件,目的是为了确保内核对象结构保持状态的一致。这个限制也使Microsoft能够在不破坏任何应用程序的情况下在这些结构中添加、 删除和修改数据成员。

当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。如果将该句柄值传递给另一个进程中的一个线程,那么这另一个进程使用你的进程的句柄值所作的调用就会失败。如果想在多个进程中共享内核对象,要通过一定的机制。

如对象句柄的继承性,命名对象,复制对象句柄。

除了内核对象外,你的应用程序也可以使用其他类型的对象,如菜单、窗口、鼠标光标、刷子和字体等。这些对象属于用户对象图形设备接口(GDI)对象,而不是内核对象。

若要确定一个对象是否属于内核对象,最容易的方法是观察创建该对象所用的函数。

概述

作为一个软件开发人员,你经常需要创建、打开和操作各种内核对象。系统要创建和操作若干类型的内核对象,比如存取符号对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型。例如,进程对象有一个进程ID、一个基本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。

这个限制条件确保了内核对象结构保持状态的一致。这个限制也使内核能够在不破坏任何应用程序的情况下在这些结构中添加、删除和修改数据成员。

如果我们不能直接改变这些数据结构,那么我们的应用程序如何才能操作这些内核对象呢?解决办法是,提供一组函数,以便用定义得很好的方法来对这些结构进行操作。这些内核对象始终都可以通过这些函数进行访问。该句柄可以被视为一个不透明值,你的进程中的任何线程都可以使用这个值。将这个句柄传递给内核的各个函数,这样,系统就能知道你想操作哪个内核对象。

为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。因此,如果将该句柄值传递给另一个进程中的一个线程(使用某种形式的进程间的通信)那么这另一个进程使用你的进程的句柄值所作的调用就会失败。

内核对象分类

如下:存取符号对象、事件对象、文件对象、文件映射对象、I / O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。

内核对象的安全性

内核对象可以用一个安全描述符(security descriptor,SD)来保护。安全描述符描述了谁拥有对象;哪些组和用户被允许访问或使用此对象;哪些组和用户被拒绝访问此对象。安全描述符通常在编写服务器应用程序的时候使用。

阅读全文

相关推荐

最新文章