開發WDM型USB裝置驅動程式(一)

來源:互聯網
上載者:User
摘要 本文介紹WDM型USB裝置驅動程式的基本概念、結構和特性,並說明了利用Driverworks進行開發的方法。

  關鍵詞 WDM;USB裝置驅動程式;Driverworks

  導言

  通用序列匯流排USB是1995年康柏、微軟、IBM、DEC等公司推廣的一種新型的通訊標準,該匯流排介面具有安裝方便、高頻寬、易於擴充等優點,已逐漸成為現代資料轉送的發展趨勢。而在開發USB裝置時,裝置驅動程式的設計是其中一項重要的技術環節,它直接影響整個裝置系統的效能。Windows98及其更高版本的作業系統對USB匯流排提供了全面的支援,並且用WDM驅動程式模型代替了VxD裝置驅動程式。WDM支援USB協議,並為其提供了高效的開發平台。因此WDM已成為開發USB外設驅動程式所必須而有效技術。

  Windows驅動程式模型(WDM)

  Windows環境下驅動程式共有三類,一類是VxD( Virtual Device Driver,虛擬設備驅動程式),起源於Windows 3.1 時代,用於Windows 95/98/Me作業系統中;一類是KMD( Kernel Mode Driver,核心模式驅動程式),用於Windows NT下;還有一類就是WDM(Win32 Driver Mode,Win32驅動程式模型),是微軟從Windows 98開始,推出的一個新的驅動類型,它是一個跨平台的驅動程式模型,不僅如此WDM驅動程式還可以在不修改原始碼的情況下經過重新編譯後在非Intel平台上運行,毫不誇張地講,WDM算得上是21世紀的驅動程式架構。

  WDM是在NT4.0驅動程式結構上發展起來的,所以它與NT4.0的驅動程式極為相似,但是它卻有了本質上的提高,增加了對隨插即用(PnP)、進階電源管理(PowerManagement)、Windows管理介面(WMl)的支援。更重要的是,WDM是一種通用的驅動模式,提供了包括USB、IEEEl394和HID等在內的一系列驅動程式類。

  1、WDM驅動程式的分層結構

  WDM體繫結構實行分層處理,即裝置驅動被分成了若干層,典型地分成:高層驅動程式、中介層驅動程式、底層驅動程式。每層驅動再把I/O請求劃分成更簡單的請求,以傳給更下層的驅動執行。最底層的驅動程式在收到I/O請求後,通過硬體抽象層,與硬體發生作用,從而完成I/O請求工作。在這樣的架構下,上面的驅動層就不需要對每個作業系統都要開發一遍了。1所示

 
  WDM還引入了功能裝置對象FDO(Functional Device Object)與物理裝置對象PDO(Physical Device Object)兩個新類來描述硬體,一個PDO對應一個真實硬體。一個硬體只允許有一個PDO,但卻可以擁有多個FDO,而在驅動程式中我們不是直接操作硬體而是操作相應的PDO與FDO。驅動程式和裝置對象的分層情況2所示。

 
  其中匯流排驅動程式(Bus Driver)位於最底層,控制對匯流排上所有裝置的訪問,建立PDO代表發現的裝置。功能驅動程式(Function Driver)控制裝置的主要功能,分層在匯流排驅動的上面,負責建立FDO。在USB情況下,功能驅動程式必須使用USB類驅動程式訪問裝置。

  2、USB驅動程式的WDM結構

  USB驅動程式的構成層次3所示。其中USB客戶驅動程式通過Windows系統提供的USB類驅動程式介面(USBDI)與下層驅動程式通訊。

 
  在USB裝置可用之前,必須對其進行配置和介面選擇,然後所選擇的介面的各個管道才是可用的。在USBDI的基礎上進行編程將大大簡化,使用者不用關心IRP的類型,而只需要在相應的分發常式中通過構造USB塊並將其通過USBDI發送下去就可以實現對USB裝置的控制了。

  裝置的訪問

  WDM不是通過驅動程式名稱,而是通過一個128位的全域惟一標識符(GUID)實現驅動程式的識別。在應用程式與WDM驅動程式通訊方面系統為每一個使用者請求打包形成一個I/O請求包(IRP)結構,將其發送至驅動程式,並通過識別IRP中PDO來區別是發送給哪一個裝置的。核心通常通過發送IRP來運行驅動程式中的代碼。

  WDM驅動程式有一個主要的初始化進入點,即一個必須稱為DriverEntry的常式。它有一個標準的函數原型。當WDM驅動程式被裝入時,核心調用DriverEntry常式。驅動程式的DriverEntry常式必須設定一系列的回調常式來處理IRP。每個回調常式有一個標準的函數原型。核心會在合適的環境下調用這個常式。

  大多數的WDM裝置對象都是在隨插即用管理器調用AddDevice常式進入點時被建立的。插入新裝置後,當系統找到由安裝資訊檔所批示的驅動程式時,這個常式被調用。在此之後,一系列隨插即用IRP被發送到驅動程式,裝置驅動程式可進行相應的功能處理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.