驅動開發——編譯正傳

來源:互聯網
上載者:User

我在前面也講過了一些關於編譯環境及工具的。在這裡結合本例子我再說一下:

DDK分為98 DDK和2000 DDK兩種,它們工作起來是大同小異的,不過有些驅動程式只能在2000 DDK中使用。由於Win98註定是一種即將被淘汰的作業系統了,所以我學習的時候也沒有過多的關注,我用的是2000的DDK,所以以下的所有內容都是針對2000 DDK的。

·準備工作
1、確定你已經安裝了Visual C++
2、安裝2000 DDK
3、安裝2000 DDK成功後,在“開始”->“程式”裡應該有“Development Kits”->“Windows 2000 DDK”的項目。
(注意一定要先安裝好VC,然後才安裝DDK,這個順序決不能顛倒!!)
4、保證DDKROOT環境變數設定為Windows 2000 DDK的基目錄,如果不是的話,請在控制台“系統”屬性的“進階”標籤環境變數編輯器中設定好這個環境變數。

·編寫必需的檔案
編譯WDM程式的時候,有兩個檔案是必須要有的,它們是:
1、makefile
(這個是什麼啊?你可能會問。)對於比較年輕的程式員來說,有可能沒有見過這個檔案吧。其實在VC這些IDE出現之前,我們都必須使用makefile來確定項目中哪些檔案需要重新編譯,現在的IDE都把這個工作自動做好了
我們要做的工作很簡單,就是提供這樣一個檔案,它的內容是:

#
# DO NOT EDIT THIS FILE!!!  Edit ./sources. If you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the driver components of the Windows NT DDK
#

!INCLUDE $(NTMAKEENV)/makefile.def

正如它所述,不要編輯這個檔案。事實上每個WDM程式所需要的makefile的內容都是一樣的,也就是說,我們只需要簡單地copy一個makefile到新的項目中就可以了
2、Sources

TARGETNAME=HelloWDM //編譯出來的驅動程式的名稱
TARGETTYPE=DRIVER      //編譯的類型是驅動程式編譯
DRIVERTYPE=WDM           //驅動程式的類型是WDM驅動程式
TARGETPATH=OBJ             //產生的檔案存放在OBJ目錄中

INCLUDES=$(BASEDIR)/inc;/   //這是需要引入的標頭檔
         $(BASEDIR)/inc/ddk;/

TARGETLIBS=$(BASEDIR)/lib/*/free/usbd.lib/  //這是需要引入的庫檔案

SOURCES=HelloWDM.cpp/    //這是源碼檔案

這個檔案指定了驅動程式目標名是HelloWDM.sys,是一個WDM驅動程式,產生的檔案存放在OBJ目錄中。值得注意的是,“=”前後不能有空格,否則編譯的時候會出錯。

·開始編譯
娃哈哈,前面羅羅嗦嗦講了一大堆,現在終於到重點了。WDM程式的編譯過程比較特殊,它不是在VC裡面按F7來編譯的(儘管你可以通過設定來達到這一目的),而是通過一個DDK工具 + 生產力build來完成。下面我們來講講具體步驟:
1、“Debug”版的產生
首先,我們假設你的原始碼放在D:/HelloWDM裡面。請跟著以下步驟:

“開始”->“程式”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”

螢幕將顯示:(有“斷行符號”的那行是需要讀者你親自打進去的)

New or updated MSVC detected.  Updating DDK environment….

Setting environment for using Microsoft Visual C++ tools.
Starting dirs creation…Completed.

D:/NTDDK>cd/HelloWDM    (斷行符號)

D:/HelloWDM>build    (斷行符號)

如果原始碼沒有錯誤的話,產生的HelloWDM.sys將存放在objchk/i386目錄中。

2、“Release”版的產生
請跟著以下步驟:

“開始”->“程式”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment”

隨後的步驟跟“Debug”版相同,不同的是產生的HelloWDM.sys將存放在objfre/i386目錄中。

聯繫我們

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