Windows Driver Framework物件模型以及物件的一般特性
基於元件的軟體工程的一個基本思想就是使用物件。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
相關文章
- 50.C++物件模型的分析(上)(C語言實現物件導向特性)C++物件模型C語言
- golang 物件導向特性Golang物件
- c++中的物件模型C++物件模型
- 新增模型物件操作模型物件
- 談談我對物件導向以及類與物件的理解物件
- 物件儲存服務的Lambda特性物件
- 物件儲存服務的加密特性物件加密
- 物件導向有哪些特性物件
- 驅動開發:探索DRIVER_OBJECT驅動物件Object物件
- DOM 模型(文件物件模型)重點模型物件
- 物件陣列與一般陣列的區別物件陣列
- JVM(八):Java 物件模型JVMJava物件模型
- C++物件模型:objectC++物件模型Object
- C++物件模型:constructorC++物件模型Struct
- 物件儲存服務的事件通知特性物件事件
- 物件儲存服務的壓縮特性物件
- Python物件導向三大特性Python物件
- 08 ### 物件導向三大特性物件
- Java物件導向三大特性Java物件
- 物件儲存服務的影像處理特性物件
- 初識文件物件模型(DOM)物件模型
- Java物件記憶體模型Java物件記憶體模型
- 物件導向 -- 三大特性之多型物件多型
- 2.1.1 Python物件導向三大特性Python物件
- C++物件導向三大特性C++物件
- 10 Python物件導向程式設計:類和物件以及和Java的對比Python物件程式設計Java
- 基於 GDI 物件的 Windows 核心漏洞利用物件Windows
- Mybatis環境搭建以及案例 SqlSession物件的方法MyBatisSQLSession物件
- Java類、物件以及(靜態)方法的探討Java物件
- js知識梳理1:理解物件的屬性特性JS物件
- Golang中多大的物件算是大物件,多小的物件算是小物件?Golang物件
- DOM (文件物件模型(Document Object Model))物件模型Object
- Maven中POM專案物件模型Maven物件模型
- C++物件模型:編譯分析C++物件模型編譯
- 瀏覽器中的JavaScript核心BOM(瀏覽器物件模型)重點掌握物件之Location物件的屬性與方法瀏覽器JavaScript物件模型
- 物件導向 -- 三大特性之封裝物件封裝
- 物件導向 -- 三大特性之繼承物件繼承
- JavaScript物件的深拷貝以及淺拷貝分析JavaScript物件
- js建立物件的各種方法以及優缺點JS物件