欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

【翻译】winddk翻译(八)--基于对象

【翻译】winddk翻译(八)--基于对象

Kernel-Mode Driver Architecture: Windows DDK
基于对象
基于NT的操作系统是基于对象的。执行体(executive)的大部分组件定义一个或者多个对象类型。每一个组件引出了一些内核模式支持例程来操纵她们的对象类型的实例。没有任何组件能够直接访问其他组件的对象。为了使用其他组件的对象,一个组件必须调用其他组件输出的支持例程。
这种设计使得操作系统能够在具有移植性的同时,具有扩展性。例如,在将来的发布新的操作系统时,完全可更新定义同样类型数据的内核,但是拥有不同的内部结构。如果这个不同的内核输出与现存内核同样名称和参数支持例程,那么内部结构的改为并不会对现存系统中任何其他执行体组件的移植性产生影响。
同样的,为了支持可移植性和可配置性,驱动必须得与操作系统通信, 或者与其他驱动通信,只使用由DDK当中描述的支持接口。
和操作系统相似,驱劝一样是基于对像的。例如:
文件对像 代表了一个模式应用程序到一个设备的连接。
设备对像 则代表每个设备的逻辑,虚拟和物理设备。
驱动对象 代表了每个驱动的映像。 

I/O管理器为文件对像,设备对象和驱动对像定义了结构和接口。
和其他执行体组伯一样,驱动通过调用I/O管理器或者基他内核组件所提供的内核模式支持例程来使用对像。内核支持例程的名字一般都表明了该例程要处理的对像类型及要对其进行的操作。下述支持例程名字具有以下的形式: 
操作对像的前缀

地点

前缀
指明导出该支持例程的内核模式组件,往往这个组件也定义了对像的类型。大部分前缀由两个字符组成。

操作
描述对该对像做什么。

对像
标明对像的类型。

例如,I/O管理器的IoCreateDevice例程创建了一个设备对像来表明一个作为I/O请求目的地的物理,逻辑或者虚拟的设备
一个系统组件能够引出例程来调用其他组件的支持例程。这就能够降低驱动的调用。I/O管理器,例如,引出一些易用的开发驱动的例程。例如, 最底层驱动用来注册中断服务例程的 IoConnectInterrupt,就调用了对中断对内核支持例程。 
不透明的对像
一些系统定义的对象是不透明的(opaque): 只有系统组件知悉这些对象的内部结构并能够只接访问对象的所有数据。定义不透明对象的系统组件会引出一些供驱动程序或者其他内核组件使用的支持例程来操纵这些对像。驱动程序决不能够直接访问非透明对象。
注意 为了保证驱动的要移植性,驱动程序必须只使用由系统提供的支持例程来操作系统定义的结构。定义该结构的系统组随时都可能会更改该对象的内部结构。

Microsoft Corporation
Send feedback on this topic
Built on Friday, February 18, 2005

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功