在Windows上,Windows DDK提供的開發環境是基於命令列的,操作起來極為不便,相信進行過驅動程式開發的朋友一定對此深惡痛絕。另一方面,Visual Studio 6.0卻給我們提供了非常友好易用的Integration Environment,讓我們有如虎添翼之感。
那麼,能否利用Visual Studio的Integration Environment來開發驅動程式呢?筆者經過多方探索,並結合自己開發驅動的經驗,摸索出了一套實用的方法,通過對Visual StudioIntegration Environment的簡單設定,建立了自己的驅動開發Integration Environment了。
下面筆者的一些經驗奉獻出來與大家共用,如有不當,歡迎指正。
0.系統要求已安裝
DDK
Visual C++6.0(安裝時選上所有工具)
1.改造ddk\bin\setenv.bat
把要求mstools的有關語句注釋掉(若想在命令列環境開發驅動則還需加入call VC_DIR\VC98\Bin\Vcvars32. bat),以便能在命令列使用vc的相關工具;若只想在IDE環境開發就不必調用Vcvars32.bat,因為相關工具的路徑資訊可以在vc環境中設定.)
2.建立一個目錄DriverEnv(目錄名隨意),作為你開發驅動的大本營
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%% C: %%WDMBOOK%% free -cef
:exit
該批處理首先對傳遞的參數作一些檢查,然後調用ddk的setenv命令設定環境變數,然後改變目錄為來源程式所
在磁碟機和目錄,並最後調用build,-b保證顯示完全的錯誤資訊,-w保證在螢幕上輸出警告,在vc ide裡的output視窗中可以看到這些錯誤和警告。
4.建立一個空白工程
選File的new功能表項目,然後選project欄的makefile,然後輸入路徑,一路next下去即可,visual studio提供兩種配置win32 debug和win32 release.
5.修改這兩種配置
選project的settings功能表項目win32 debug:
在Build Command Line一欄填入MakeDrvr DDK_DIR SOURCE_DRIVE SOURCE_DIR checked [build options]
在Rebuild all options一欄填入 -nmake /a
在output file一欄填入與sources檔案中的TARGETNAME相同的檔案名稱
在Browse info file name一欄填入obj\i386\checked\(與TARGETNAME相同的檔案名稱,見下述).bsc
win32 release:
在Build Command Line一欄填入MakeDrvr DDK_DIR SOURCE_DRIVE SOURCE_DIR free [build options]
在Rebuild all options一欄填入 -nmake /a
在output file一欄填入與sources檔案中的TARGETNAME相同的檔案名稱
在Browse info file name一欄填入obj\i386\free\(與TARGETNAME相同的檔案名稱).bsc
註:DDK_DIR一般可以寫成%BASEDIR%,build options一般為-cef即已足夠
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 //若想要瀏覽資訊,則要有本行;否則可無
10.因為MakeDrvr.bat在DriverEnv目錄,所以應把該目錄添加到vc的Executable files裡面
選tools的options功能表項目,然後選directories頁,在show directories for一欄選擇Executable files,然後添加即可.
至此,環境設定完畢,你可以按F7, build你的驅動程式了。