Windows的驅動開發模型

2022-02-26 10:55:16 字數 1340 閱讀 2238

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的發展會讓前面學習傳統型驅動的努力付之東流。乙個典型的例子是:大約在2023年到2023年間發布首個版本的硬碟上層過濾diskperf的**,18年過去了,今天依然可以編譯並正常在最新版本的vista上執行。

本書對於大部分無法找到wdf例項的章節,都採用了傳統型驅動進行說明。比如磁碟過濾、檔案系統過濾和網路中間層驅動。此外為了從簡單入手,對於入門級的兩個例子(串列埠和鍵盤)也使用了傳統型驅動。但是虛擬磁碟和虛擬網絡卡(第5章和第11章),使用了wdf版本的例子,請讀者注意識別。

Windows的驅動開發模型

windows的驅動開發模型 在windows的不同版本上開發的驅動程式 模型 模型這個詞語應該 於單詞 mode 在windows nt上,驅動程式被稱為kernel driver mode驅動程式。筆者認為這個mode是指一種驅動程式的結構和運作的規範 有過不同的名稱。比如在windows 9x...

Windows驅動開發

以ddk2600版本為例 無論是ddk驅動還是pnp驅動,都需要撰寫makefile檔案.使用nmake 來驅動執行.系統目錄預設有makefile檔案,裡面包括有安裝目錄下makefile.def檔案,這個裡面包含檔案makefile.inc,及每個即編譯檔案所在目錄的dirs檔案 makefil...

windows驅動開發

作者 豬頭三 個人 序言 很多人都對驅動開發有興趣,但往往找不到正確的學習方式.當然這跟驅動開發的本土化資 料少有關係.大多學的驅動開發資料都以英文為主,這樣讓很多驅動初學者很頭疼.本人從 事驅動開發時間不長也不短,大概也就3 4年時間.大多數人都認為會驅動開發的都是牛人,高手之類的.其實高手,牛人...