WinXP下DDK配置

      本來以爲和Windows 2000下的設置是一樣的,但是,按照網上的方法,總是不行,鬱悶了半晚上。今天上午又重新看了看setenv.bat的內容,發現了XP與2000下的 setenv內容還是不同的,設置DDK開發環境的語句略有不同。現在把方法及注意事項列舉如下:

      通常驅動程序的調試都是用ddk在cmd中完成的。這部分我暫時略過。下面先介紹如何設置vc++6.0在Visual Studio 6.0集成環境中開發設備驅動程序的方法。

      在Windows上,Windows DDK提供的開發環境是基於命令行的,操作起來極爲不便,而Visual Studio 6.0給我們提供了非常友好易用的集成環境,讓我們有如虎添翼之感。
  那麼,能否利用Visual Studio的集成環境來開發驅動程序呢?答案是可以的。通過對Visual Studio集成環境的簡單設置,創建好自己的驅動開發集成環境就可以了。

1,

第一:安裝Vc++6.0,我裝的是英文版,中文版應該也可以,不過我沒試。

第二:安裝winXP DDK,注意,安裝目錄中間不能有空格,比如D:/Program Files不行,

我直接裝在了D盤,裝完後設置環境變量DDKROOT爲安裝目錄D:/WINDDK/2505。

2,創建一個目錄,作爲開發目錄,我是利用<<PCI設備開發寶典>>的光盤中的工程文件PCI9052Demo,直接考到E盤,所以,工作目錄下是E:/PCI9052Demo

3,工作目錄下創建一個批處理文件MakeDrvr.bat,內容如下:

@echo off
if "%1"=="" goto usage
if "%3"=="" goto usage
if not exist %1/bin/setenv.bat goto usage
call %1/bin/setenv %1 %4
%2
cd %3
build -b -w %5 %6 %7 %8 %9
goto exit

:usage
echo usage  MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked [build_options]
echo eg      MakeDrvr %%DDKROOT%% F: %%WDMWorkshop%% free -cef
:exit

解釋以下:

1% 是DDK_dir,也就是ddk的安裝目錄

2% 是Driver_Drive,是你工作目錄所在的盤符,這裏是E:

3% 是Driver_Dir,是你工作目錄的路徑,這裏是E:/PCI9052Demo

4% 是編譯模式,checked表示調試模式,free表示發行模式,這裏是出問題的地方,後面再說。

該批處理首先對傳遞的參數作一些檢查,然後調用ddk的setenv命令設置環境變量,然後改變目錄爲源程序所在驅動器和目錄,並最後調用build,-b 保證顯示完全的錯誤信息,-w保證在屏幕上輸出警告,在vc ide裏的output窗口中可以看到這些錯誤和警告。

4,建立一個空白工程
   選File的new菜單項,然後選project欄的makefile,然後輸入路徑,一路next下去即可,visual studio提供兩種配置win32 debug和win32 release. 按照cant的《windows wdm 設備驅動程序開發指南》方法,可以刪除掉,添加Win32 Checked和 Win32 Free

5,VC的Project->settings裏面改變設置

修改這兩種配置
=============================================================
Free
=============================================================
build command line:
e:/PCI9052Demo/MakeDrvr %DDKROOT% e: e:/PCI9052Demo free

rebuild all opinions:
-nmake /a

output filename:
PCI9052Demo.sys

browse info file name:
objfre/i386/PCI9052Demo.bsc


=============================================================
Checked
=============================================================
build command line:
e:/PCI9052Demo/MakeDrvr %DDKROOT% e: e:/PCI9052Demo checked

rebuild all opinions:
-nmake /a

output filename:
PCI9052Demo.sys

browse info file name:
objfre/i386/PCI9052Demo.bsc

6.添加源文件到工程
  可以新建,也可以添加,這和普通的win32開發一樣。

7.添加資源文件
  選INSERT的RESOURCE菜單項即可

8.把文件makefile放入源程序目錄,其內容總是
#
# 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

9.把文件Sources放入源程序目錄,內容爲
  TARGETNAME=RamDrive//這是要生成的驅動程序.sys文件的名字
  TARGETPATH=obj //.sys文件所在目錄的上層目錄,(由於ddk的bug)應手工在obj目錄下創建checked和free目錄,以作爲.sys的最終存放目錄
  TARGETTYPE=DRIVER //驅動程序的類型,一般不變
  INCLUDES=$(BASEDIR)//inc //ddk包含文件路徑,一般不變
  SOURCES=RamDrive.cpp RamDrive.rc //源文件(不要頭文件),資源文件
  BROWSER_INFO = 1 //若想要瀏覽信息,則要有本行;否則可無


這樣設置完之後,按編譯會出現錯誤的,錯誤如下:

usage: setenv <directory> [fre|chk] [64] [hal]
  Example:  setenv d:/ddk chk        set checked environment
  Example:  setenv d:/ddk            set free environment (default)
  Example:  setenv d:/ddk fre 64    sets 64 bit free environment
  Example:  setenv d:/ddk hal        sets free hal environment
  Example:  setenv d:/ddk fre hal    Same
'build' 不是內部或外部命令,也不是可運行的程序
或批處理文件。

PCI9052Demo.sys - 0 error(s), 0 warning(s)

問題出在什麼地方呢?關鍵在於XP的DDK的編譯模式已經不再是free和checked了,而是上面的fre和chk,另外還加了fre 64,hal, fre hal。

解決辦法就是:VC的Project->settings裏面設置的編譯模式改成fre和chk,然後,輸出就正常了,

--------------------Configuration: PCI9052Demo - Win32 fre--------------------
BUILD: Object root set to: ==> objfre
BUILD: Adding /Y to COPYCMD so xcopy ops won't hang.
BUILD: /i switch ignored
BUILD: Compile and Link for i386
BUILD: Loading D:/WINDDK/2505/build.dat...
BUILD: Computing Include file dependencies:
BUILD: e:/pci9052demo/sources. unexpected in directory with DIRS file
BUILD: Ignoring e:/pci9052demo/sources.
BUILD: pci9052demo found in dirs., is not a subdirectory of e:/pci9052demo
BUILD: Examining e:/pci9052demo

 directory tree for files to compile.
    e:/pci9052demo
BUILD: Linking e:/pci9052demo directory
BUILD: Done

PCI9052Demo.sys - 0 error(s), 0 warning(s)

 

 

 

以上配置方法,經我驗證通過!!l

 

 

源自:http://blogold.chinaunix.net/u2/65112/showart_631432.html

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