Windows的驅動開發模型

來源:互聯網
上載者:User

Windows的驅動開發模型

本文節選自《寒江獨釣:Windows核心安全編程》一書

 

    在Windows的不同版本上開發的驅動程式“模型”(模型這個詞語應該來源於單詞“Mode”。在Windows NT上,驅動程式被稱為Kernel Driver Mode驅動程式。筆者認為這個Mode是指一種驅動程式的結構和運作的規範),有過不同的名稱。比如在Windows 9x上的驅動程式,都叫做VXD,而在Windows NT上的驅動程式被稱為KDM驅動程式,Windows 98~2000這個時期出現的新模型叫做WDM。
    Windows的驅動模型概念,本來是就驅動程式的行為而言的。比如WDM驅動,必須要滿足提供n種被要求的特性(如電源管理、隨插即用)才被稱為WDM驅動。如果不提供這些功能,那麼統一稱為NT式驅動。同樣的,WDF驅動也有它的一系列規範。
    但是本書採用簡單的區分方法。將一切在Windows 2000~Windows Vista下能正常運作且未調用WDF相關的核心API函數的驅動都稱為傳統型驅動(包括NT式和WDM)。如果調用了WDF相關的核心API則稱為WDF驅動。
請注意:WDF驅動是可以調用傳統型驅動所調用的核心API的,WDF可以視為傳統型的升級版。
    模型的發展並不是和作業系統版本的升級齊步走的,而是有一個逐漸替代的過程。比如Windows 98已經支援部分的WDM驅動程式,但是又支援一部分的VXD驅動。而到了Windows 2000,則VXD這種驅動程式完全被淘汰了。KDM則是WDM的前身。WDM是在KDM的基礎上增加了一些新的特性,制定了一些新的規範而造就的。絕大部分函數調用都是通用的。當然,Windows 9x系列的核心完全不同,所以VXD與之相比,就沒有一個核心API函數是一樣的。
    故而隨著Windows 9x的失寵,VXD難逃徹底被淘汰的命運。Windows NT則發展成了後來的Windows版本,KDM也變成了WDM而存在下來。當然,微軟不會閑著,現在又推出了新的WDF。讀者又不得不擔心:本書是用WDM寫的還是用WDF寫的呢?會不會剛剛學完又被淘汰呢?
    和VXD不同,從KDM到WDM再到WDF是一脈相承的,基本上KDM程式員在學習WDM時已經佔盡了便宜。到WDF也不例外,WDF與其說是新的驅動開發模型,還不如說是在已有的核心API和資料結構的基礎上,又封裝出一套讓使用者覺得更簡單、更易用的以Wdf-開頭的一組API。因此,讀者大可不必擔心WDF的發展會讓前面學習傳統型驅動的努力付之東流。一個典型的例子是:大約在1991年到1992年間發布首個版本的硬碟上層過濾diskperf的代碼,18年過去了,今天依然可以編譯並正常在最新版本的Vista上運行。
    本書對於大部分無法找到WDF執行個體的章節,都採用了傳統型驅動進行說明。比如磁碟過濾、檔案系統過濾和網路中介層驅動。此外為了從簡單入手,對於入門級的兩個例子(串口和鍵盤)也使用了傳統型驅動。但是虛擬磁碟和虛擬網卡(第5章和第11章),使用了WDF版本的例子,請讀者注意識別。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.