windows 驱动开发 DDK与WDK WDM的区别
2.DDK(Driver Developer Kit)和WDK(Windows Driver Kit)的區別:
這個要說說驅動相關的一些歷史:
1).95/98/ME下,驅動模型為:Vxd,相關資料可以看《編程高手箴言》的前幾個章節,里面有很詳細的介紹,雖然這個東西已經過時,但大概看看還是會增長見識的。
2).2000/XP/2003下,Windows采用WDM驅動模型(Windows Driver Model),開發2000/XP/2003的驅動開發包為:DDK。
????????????WDM驅動無非是微軟在NT式驅動之上進行了擴充,過濾驅動也不例外 。
3).Vista及以后版本,采用了WDF驅動模型(Windows Driver Foudation),對應的開發包:WDK。
其實WDK可以看做是DDK的升級版本,現在一般的WDK是包含以前DDK相關的功能,現在XP下也可以用WDK開發驅動,WDK能編譯出2000-2008的各種驅動。
3.Vxd驅動文件擴展名為:.vxd。
?? WDM和WDF驅動文件擴展名為:.sys。
? ? ? ? 4、WDM 是 Win32設備驅動程序體系結構。
? ? ? ? ? ??Windows設備驅動程序,過去是WDM(Windows Driver Model)框架,編程復雜,初學者難以掌握其編程要領。為了解決這一問題,微軟對WDM驅動程序的架構做了改進,形成了全新的WDF(Windows Driver Foundation)框架結構。它提供了面向對象和事件驅動的驅動程序開發框架,大大降低了開發難度。從現在開始,掌握Windows設備驅動程序的開發人員,由過去的“專業”人士,將變為“普通”大眾。 ?WDF驅動程序包括兩個類型,一個是內核級的,稱為KMDF(Kernel-Mode Driver Framework),為SYS文件;另一個是用戶級的,稱為UMDF(User-Mode Driver Framework),為DLL文件。
5、
ddk 和wdk
ddk是基于wdm驅動模型的,而wdk是基于WDF驅動模型的,wdm驅動模型和wdf驅動模型的最大的區別是:
1)wdf驅動框架對WDM進行了一次封裝,WDF框架就好像C++中的基類一樣,且這個基類中的model,IO model ,pnp和電源管理模型;且提供了一些與操作系統相關的處理函數,這些函數好像C++中的虛函數一樣,WDF驅動中能夠對這些函數進行override;特別是Pnp管理和電源管理!基本上都由WDF框架做了,而WDF的功能驅動幾乎不要對它進行特殊的處理;
2)WDF驅動模型 與WDM驅動模型的另外一個主要區別是:
WDF 驅動采用隊列進行IO處理,而WDM中將所有的IO操作都用默認的隊列進行處理,如果要進行IRp同步,必須使用StartIO;
3)WDF是面向對象的,而WDM是面向過程的,WDF提供對象的封裝,如將IRP封裝成WDFREQUEST,對象提供方法和Event。
5)usb設備的讀寫;
當應用程序使用ReadFile或WriteFile進行讀寫時,首先將
UsbBuildInterruptOrBulkTransferRequest將構建urb請求,然后通過IoCallDriver發送給底層usb 總線驅動;
對于WDF來說,WdfUsbTargetPipeFormatRequestForRead 格式化讀請求,然后使用WdfRequestSend? 發送給底層Usb總線驅動;
對WDM和WDF的usb的讀寫都可以設置完成例程;
總結
以上是生活随笔為你收集整理的windows 驱动开发 DDK与WDK WDM的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP实现小程序微信支付V2获取prep
- 下一篇: 编译原理学习笔记(一)