USB裝置驅動程式導讀 2

2021-04-14 13:47:09 字數 1275 閱讀 8642

接下來,我們就來分析一下ce中的樣例程式,我用的是4.2版本的,所以下面的內容是4.2版本中的程式。這裡的程式是通過資料夾的形式組織在一起的,所以我們還是像以前學習ce的時候那樣,先來了解與此相關的資料夾結構,如下圖。

在usb資料夾下,分成了class,clients,common,hcd,inc,usbd幾個資料夾,其中inc和common裡面有乙個lock.c的程式,這個程式很明顯是將要被其他usb有關的驅動程式所使用的乙個鎖,**很簡單,只是乙個類似臨界區的封裝體,可以保護多執行緒對同一記憶體區域的讀寫訪問,可以先不去管它。clients資料夾可能最初微軟的開發人員是用來放置裝置驅動程式的,但是後來沒有放,而發布的時候也沒有刪除,所以遺留了下來,裡面是個空的資料夾,所以沒用實際用處。usbd和hcd是前述的底層驅動,裡面含有很多子資料夾和程式,由於我們只針對usb裝置驅動,因此對這兩部分不做分析,不興趣的朋友可以自己去了解。

重點就在class資料夾了,展開來看,裡面又包含了common、hid、printer、storage幾個資料夾,同樣,common裡面存放的源程式是為hid、printer、storage所共有的。hid是usb輸入裝置如鍵盤/滑鼠的樣例驅動程式,printer是usb印表機的樣例驅動程式,storage是usb儲存裝置如u盤的樣例程式。

我們此次以usb儲存裝置為例,所以再來展開storage資料夾,其中的inc資料夾裡面是標頭檔案,class是usb儲存裝置的驅動程式,disk是磁碟驅動程式。這裡為什麼有兩個驅動程式呢,我來簡要解釋一下。

驅動程式工作在硬體與作業系統之間,它有兩個功能,乙個是 將作業系統**來的操作以符合指定硬體裝置的形式控制硬體裝置,另乙個是向作業系統提供這個訪問介面。比如說u盤,一方面驅動程式要把作業系統對u盤的識別、讀、寫等操作轉換成u盤的動作,另一方面又告訴作業系統這是個u盤,可以當成乙個資料夾或檔案系統來用,能夠接受標準的檔案操作命令。所以此處存在兩個驅動。

另外還有乙個資料夾,wince420/public/common/ddk/inc,這裡面是與裝置驅動有關的標頭檔案,對於usb裝置,相關的檔案有usb100.h, usbtypes.h, usbdi.h,這裡面前兩個裡面關於usb的定義是完全符合usb規範的,不是隨便定義出來的,而usbdi.h檔案裡的內容就是usbd匯流排驅動程式向usb裝置驅動程式提供的介面描述,在開發usb裝置驅動時必須要包含此標頭檔案,這樣才可以得到usbd介面的原型。

說了這麼多,還沒接觸到程式,不過不要著急,這些可是大的框架哦,我得休息一下,「廣告過後,馬上回來!」

USB裝置驅動程式導讀 2

接下來,我們就來分析一下ce中的樣例程式,我用的是4.2版本的,所以下面的內容是4.2版本中的程式。這裡的程式是通過資料夾的形式組織在一起的,所以我們還是像以前學習ce的時候那樣,先來了解與此相關的資料夾結構,如下圖。在usb資料夾下,分成了class,clients,common,hcd,inc,...

USB裝置驅動程式導讀

隨著 usb裝置的不斷增加,我們這些開發人員也就多了對 usb裝置進行驅動程式開發的工作。但是對於很多初學者來說,存在以下三個困難 一是對wince 的驅動程式結構了解得太少,沒辦法得心應手的專注於驅動程式的開發工作 二是對wince 自帶的usb 驅動程式的例子沒有弄懂,看到一大堆資料夾結構和源程...

USB裝置驅動程式導讀 8

帶著上次留下的疑問,我們繼續來學習作業系統如何通過usbdisk讀寫usb裝置的。我們先看usb class storage disk scsi2 usbdisk6.def檔案。在這個檔案中可以看到,該dll一共匯出了14個函式,其中兩個是上次內容當中被裝置驅動程式呼叫的usbdiskattach和...