windows XP下驅動開發環境設定(DDK+VC6.0)

來源:互聯網
上載者:User
通常驅動程式的調試都是用ddk在cmd中完成的。這部分我暫時略過。下面先介紹如何設定vc++6.0在Visual Studio 6.0Integration Environment中開發裝置驅動程式的方法。

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

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)

相關文章

聯繫我們

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