makefile文件、sources文件,DDK+VC開發配置文件

用DDK編譯驅動,需要兩個文件的支持,一個是MakeFile文件,這個文件是通用的。而Source文件則根據每個驅動程序而不同,轉了一篇講解如何編寫這兩個文件的文章,感謝原作者。

學習和編寫WDM 驅動程序對誰而言都是一件具有挑戰的事情,需要恆心和毅力。當你入門後你會發現這是一件多麼令人興奮的事情。但是如何使用WDM的編譯環境從而開始WDM 學習的旅程?對一個初學者來說這個門檻可不低。安裝完DDK後,可以用 [開始]->[Development kit]->[Windows XX DDK]->[check/free Build Environment]來啓動編譯環境,由於DDK沒用提供IDE環境(當然你可以使用配置後的VC或DriverStudio這另當別論),對於我們 這些孕育在Xp時代的程序員來說這無疑是件難事。爲什麼?因爲編譯一個WDM程序除了.cpp .h 源文件外至少還需要: 
                               makefile文件
                               sources 文件
這兩個文件本應該由IDE自動幫我們生成,如VC就爲我們的所有工程生成了makefile,sources,xx.rc文件,平時我們根本不需要了解他 們就可以編譯我們的工程。可DDK沒有工具爲我們生成這兩個文件,但DDK編譯程序的時候又需要他們,俗話說得好“我不如地獄誰入地獄”,我們就來編寫這 兩個文件:
       
一. makefile (沒有擴展名,它名字就叫makefile),內容如下:

C++代碼
  1. # DO NOT EDIT THIS FILE!!!   Edit .\sources. if you want to add a new source  
  2. # file to this component.   This file merely indirects to the real make file  
  3. # that is shared by all the components of NT.  
  4. #  
  5. !INCLUDE $(NTMAKEENV)\makefile.def  

值得高興的是,WDM程序使用的所有makefile都這樣寫,我們只需寫一個,編譯時把它拷貝到工作目錄下就行了

二. sources文件就需要我們根據不同的場合修改了,不過基本模板如下:

C++代碼
  1. TARGETNAME=驅動程序名    //(不含擴展名)      
  2. TARGETPATH=obj         // 固定不變      
  3. TARGETTYPE=DRIVER      // 固定不變(表明,連接成*.sys文件)      
  4. DRIVERTYPE=WDM         // 爲 Win32 Driver Model 驅動      
  5. INCLUDES=$(BASEDIR)\inc\ddk;$(BASEDIR)\inc   // 源程序可能使用的DDK頭文件所在的目錄,多個目錄用“;” 隔開,多個文件用 '空格' 隔開   

其中“$(BASEDIR)”指DDK當前的安裝目錄,例如當前DDK安裝在D:上,則$(BASEDIR) 就是 “D:\DDK”,所以上面的INCLUDES可以翻譯成D:\DDK\inc\ddk; D:\DDK\inc

  

三. 不得不注意的3個討厭問題:
      1. 編譯時必須保證 makefile,sources和源程序在同一目錄下
      2. 編寫sources文件時,
其中的”=”兩邊不能有空格
      3. 如果上面的問題還不夠討厭,那麼下面這個問題可以討厭的讓人放棄學習DDK:工程的工作目錄的絕對路徑中不能出現空格,如 “C:\Documents and Settings\MyProgramme\”將不能被DDK編譯器編譯,而且表面上看來DDK好像是完成的編譯,實際上它什麼都沒做!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章