Windows驅動程式開發基礎(四)驅動的編譯調試和安裝

來源:互聯網
上載者:User

標籤:驅動開發   windows 7   

Windows驅動程式開發基礎,轉載標明出處:http://blog.csdn.net/ikerpeng/article/details/38793995


下面說一下開發出來驅動程式以後如何編譯。一般有以下幾種方式:

1. 建立Makefile檔案,用nmake工具進行編譯和連結;

2. 建立Makefile,sources, dirs檔案,用build工具編譯。

3. 用整合式開發環境進行編譯連結。


我採用的是第三種方式,通過VS2010+wdk配置Windows驅動程式開發環境。地址:   http://blog.csdn.net/ikerpeng/article/details/38761441


但是接下來要說的是那樣配置的部分原因:

   編譯函數的過程中有4種呼叫慣例:c語言呼叫慣例:函數用_cdecl修飾;標準呼叫慣例:函數用_stdcall 修飾;快速呼叫慣例:函數用_fastcall 修飾;C++類成員函數呼叫慣例:函數用 thiscall 修飾。

    其中的前兩種是經常用到的。c語言呼叫慣例中,會在目標檔案中產生一個符號來代替這個函數:底線+函數名的形式;而標準呼叫慣例的形式是:底線+函數名+@X,同時返回X。其中X代表需要清理堆棧是需要的數字。例如:

    Windows驅動程式需要使用到標準呼叫慣例,對於DriverEntry函數,系統會尋找[email protected]作為驅動程式的入口,但是VS2010預設的是C語言呼叫慣例。所以只存在_DriverEntry,因此調用的時候就會出錯。所以要將C/C++中的調用設定為_stdcall 修飾。


Tips:

1. 很多C/C++的的提示都要謹慎的使用,甚至C語言中的malloc函數和C++中new操作都不要使用。因為在核心模式下,程式無法調用使用者模式下面的API。


2. 最後安調試驅動程式可以使用:DbgView,裝驅動可以使用DriverMonitor。


本小節完。


參考書籍:


《Windows驅動開發技術詳解》


Windows驅動程式開發基礎(四)驅動的編譯調試和安裝

聯繫我們

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