日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别

發(fā)布時間:2023/12/15 windows 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景介紹

首先,先從基礎(chǔ)的東西說起,做任何程序的開發(fā),你都需要一個配套的開發(fā)套件,專業(yè)術(shù)語叫做SDK(Software Development Kit,軟件開發(fā)套件)。比如:開發(fā)JAVA程序,我們可能需要一個JDK。那么,開發(fā)WINDOWS應(yīng)用程序,我們同樣需要WINDOWS的SDK。而想要開發(fā)WINDOWS下的驅(qū)動程序,我們則需要一個DDK/WDK。

具體概念

OK,下面來具體談?wù)刅XD/WDM/WDF/DDK/WDK到底是些什么東東。這個就要從驅(qū)動程序的的一些歷史開始說起了:

  • 95/98/ME下,Windows的驅(qū)動模型為VXD(Virtual X Driver,虛擬設(shè)備驅(qū)動程序),開發(fā)出來的驅(qū)動文件擴展名為*.vxd。相關(guān)資料可以看《編程高手箴言》的前幾個章節(jié),里面有很詳細的介紹,雖然這個東西已經(jīng)過時,但大概看看還是會增長見識的。VxD程序是Windows 9x特有的,它在Windows NT下不能運行。所以如果你的程序是依靠VxD的,它就不能被移植到Windows NT平臺上去。
  • 2000/XP/2003下,升級為WDM驅(qū)動模型(Windows Driver Model),WDM驅(qū)動框架比較復雜,編程難度大,初學者難以掌握,仍然不是最理想的模型。WDM模型下對應(yīng)的驅(qū)動開發(fā)包叫做DDK(Driver Develop Kit),開發(fā)出來的驅(qū)動文件擴展名則升級為*.sys。
  • Vista及以后版本,進一步升級為WDF驅(qū)動模型(Windows Driver Foundation),WDF模型在WDM模型的基礎(chǔ)上進行簡化,提供了面向?qū)ο蠛褪录?qū)動的驅(qū)動程序開發(fā)框架,大大降低了開發(fā)難度。自此,掌握Windows設(shè)備驅(qū)動程序的開發(fā)人員,由過去的“專業(yè)人士”變成了“普通大眾”。WDF驅(qū)動程序包括兩個類型,一個是內(nèi)核級的,稱為KMDF(Kernel-Mode Driver Framework),為SYS文件;另一個是用戶級的,稱為UMDF(User-Mode Driver Framework),為DLL文件。WDF模型下對應(yīng)的開發(fā)包則叫做WDK(Windows Driver Kit),開發(fā)出來的驅(qū)動文件擴展名仍然是*.sys。其實WDK可以看做是DDK的升級版本,現(xiàn)在一般的WDK是包含以前DDK相關(guān)的功能,現(xiàn)在XP下也可以用WDK開發(fā)驅(qū)動,WDK能編譯出2000-2008的各種驅(qū)動。
  • 開發(fā)DDK和WDK的區(qū)別

    DDK是基于WDM驅(qū)動模型的,而WDK是基于WDF驅(qū)動模型的。WDM驅(qū)動模型和WDF驅(qū)動模型的最大的區(qū)別是:

  • WDF驅(qū)動框架對WDM進行了一次封裝,WDF框架就好像C++中的基類一樣,且這個基類中的model,IO model,pnp和電源管理模型;且提供了一些與操作系統(tǒng)相關(guān)的處理函數(shù),這些函數(shù)好像C++中的虛函數(shù)一樣,WDF驅(qū)動中能夠?qū)@些函數(shù)進行override;特別是Pnp管理和電源管理!基本上都由WDF框架做了,而WDF的功能驅(qū)動幾乎不要對它進行特殊的處理;

  • WDF驅(qū)動采用隊列進行IO處理,而WDM中將所有的IO操作都用默認的隊列進行處理,如果要進行IRp同步,必須使用StartIO;

  • WDF是面向?qū)ο蟮?#xff0c;而WDM是面向過程的,WDF提供對象的封裝,如將IRP封裝成WDFREQUEST,對象提供方法和Event。

  • 總結(jié)

    以上是生活随笔為你收集整理的Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。