基于组件的软件工程的一个基本思想就是使用对象。Windows 7 Device Driver 的作者Ron Reeves从面向对象编程的意义上,解释了Windows Driver Framework(WDF)对象模型以及对象的一般特性。

什么是软件对象?

基于组件的软件工程的一个基本思想就是使用对象。那么什么是对象?就此并没有广为接受的观念。计算机科学家Grady Booch(1991)认为,对象由3个主要特性定义,分别是状态、行为和标识。他在撰写的Object-Oriented Analysis and Design with Applications 一书中,介绍了使用OOP技术的编程方法。在很多认知理论中,分析的基本单位是信息处理组件。组件完成针对对象或符号的内部表示的基本信息处理。如果我们研究这些组件的工作方式,就会发现它们将感知输入转换成概念表示,把一种概念表示转换成另一种概念表示,或者把概念表示转换成动作输出。

软件的面向对象编程技术出现了近25年,但这并不是新生事物。柏拉图和亚里士多德等古代哲学家,以及伊曼努尔•康德等现代哲学家,已经解释了存在的一般意义,并确立了概念和对象的基本特性。

直到1990年左右,贝尔实验室出版了The Annotated C++ Reference Manual 一书,OOP开始进入主流编程方法的队列。我们已经慢慢地意识到了程序应该具有什么样的属性来解决复杂的现实问题。有VB.NET或C#这些新语言,有它们创建类和对象的能力,仅使用抽象数据类型或类,这些都还不够。

在这种持续发展的进程中,称为面向对象技术的方法论演变成了所谓的对象模型。软件工程基础包含了抽象、模块化、封装、继承、类型、并发和持久性的原则,其元素称为对象模型。对象模型定义了以元素间所形成的协同关系的方式来使用这些元素。

Windows 驱动程序基础

虽然我们使用OOP模型已经有20年了,但是这个方法是在最近刚刚进入编写硬件设备驱动程序的领域。OOP模型以框架的意义呈现了出来。微软公司认识到,有很多共用代码可以从对象中获得并收集进框架。他们将这个新的用于设备驱动程序开发的OOP模型框架称为Windows 驱动程序基础(WDF)。

WDF有两个主要用于设备驱动程序开发的子框架:用户模型驱动程序框架(UMDF)和内核模型驱动程序框架(KMDF)。WDF及其子框架是Windows操作系统系列的下一代驱动程序模型。有了这个新模型,可以降低开发驱动程序的时间,提高系统稳定性,增强驱动程序的可服务性。

WDF包括一套组件(对象),用于开发、部署,以及对KMDF和UMDF驱动程序的维护。

WDF对象模型

对象是重要的设备驱动程序开发基本元素。在WDF对象模型中,

  • 对象作为驱动程序构建块。驱动程序通过明确定义的接口修改这些对象。对象本身具有明确定义的生命周期。
  • 一组事件可以影响每种类型的对象。框架定义了每个事件的默认行为。为了支持某个特定驱动程序的行为,驱动程序包含了覆盖默认行为的回调例程。

模型定义了一系列表示通用驱动程序结构的对象,这些结构包括设备、队列、I/O请求和驱动程序本身。对象具有属性、方法和事件:

  • 属性描述了对象的特性。每个属性与获取和设置属性值的方法关联。
  • 方法执行对象的动作。
  • **事件是驱动程序要执行动作的条件。**WDF识别每个对象的可能事件,并且定义了大部分的默认动作。对于某类默认动作并不适用其驱动程序的事件,驱动程序包含了处理这类事件的代码。当事件发生时,WDF调用相关的回调函数。

原文链接:http://www.informit.com/articles/article.aspx?p=1718474

本文参加 Translate Geeks to Chinese 翻译活动