Windows驅動開發(一)

來源:互聯網
上載者:User

標籤:style   http   color   使用   檔案   代碼   工作   ar   

筆者學習驅動編程是從兩本書入門的。它們分別是《寒江獨釣——核心安全編程》和《Windows驅動開發技術詳解》。兩本書分別從不同的角度介紹了驅動程式的製作方法。


    在我理解,驅動程式可分為兩類三種:

    第一類:傳統型驅動

        傳統型驅動的特點就是所有的IRP都需要自己去處理,自己實現針對不同IRP的派發函數。其可以分為以下兩種:

        1. Nt式驅動:此驅動通過註冊系統服務來載入,並且不支援隨插即用功能(即沒有處理IRP_MJ_PNP這個IRP)。

        2. WDM驅動:此驅動不通過註冊系統服務來載入,需啊喲自己編寫inf檔案。同時,它與NT式驅動相比最大的特點就是支援隨插即用功能。

    第二類:微過濾驅動

        微過濾驅動是微軟推出的一個驅動架構。它將驅動程式內建立裝置對象之類的操作全部封裝了,讓使用者無需理會此部分繁雜的工作。使用者只需要針對不同的IRP處理好他們響應的前-後操作還有使用者態與核心態的通訊即可,即可以理解為微過濾驅動對IRP的處理類似於使用者態的API HOOK。


    對於剛開始編寫驅動程式的新人來說,使用微過濾驅動是最好不過的了。因為它將大量的內部邏輯進行了封裝,我們只需要實現相應的處理邏輯即可。由於筆者先開始看的是《Windows驅動開發技術詳解》,所以從第一章的“從兩個最簡單的驅動談起”開始接觸了傳統型驅動的兩種形式,從而入門。


    在開始介紹傳統型驅動之前,先補充說明一下驅動的編譯方式。

    驅動的編譯方式有很多種。

    ● 微軟官方推薦使用WDK提供的Build Environments來對相應系統編譯驅動,此方法需要使用者自行建立Source檔案編譯,對於不熟悉的人略顯困難

    ● VS+ddkwizard。ddkwizard外掛程式會在VS中添加一個DDK工程,它可以產生基本的WDM驅動模板,相對來講會稍微方便些,但是還是需要一些配置。

    ● 直接使用VS編譯。對於做慣使用者態開發的人來講,這個是最方便的,目前我用的也是這種方式。它的配置項會相對多一點,但是相信這不是障礙。下面就介紹一下如何配置VS(以VS2005為例)


VS2005配置驅動編譯環境方法:

1. 安裝WDK,並配置系統內容變數:WDKROOT-D:\WinDDK\7600.16385.1

2. 啟動VS2005,在功能表列“工具”-“選項”內選擇“項目和解決方案”-“VC++目錄”依次添加所需的目錄,具體配置如:

注意:$(WDKROOT)\inc\api一定要放在第一個,否則會導致編譯失敗

3. 具體的項目屬性按照如下設定:

註:建立項目時選擇“Win32項目”

按照以片配置好後就可以直接編譯驅動程式了,此配置是XP系統的,其他系統的連結不同的庫就可以了。


註:如果在編譯過程中遇到如下錯誤:

error LNK2019: 無法解析的外部符號 @[email protected]

請您將“項目屬性”-“C/C++”-“代碼產生”的“緩衝區安全檢查”設為“否”

相關文章

聯繫我們

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