程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 配置WINDOWS驅動程序的開發環境-走出第一步

配置WINDOWS驅動程序的開發環境-走出第一步

編輯:.NET實例教程
一個星期前老師給我布置了一項任務:開發我們自己設計的一塊板子的PCI設備驅動,並給我指出了方向,具體說就是“三步走”戰略:
(1)入門。熟悉基於DriverStudio開發環境的設備驅動開發,同時側面了解PCI設備驅動程序的相關知識。
(2)進階。運用純DDK進行驅動開發,著重於學習別人的實例,並能熟練進行調試和修改。
(3)實戰。深入研究PCI總線標准,結合具體的電路板特性開發出一套自己的設備驅動。
現在正在入門階段的初級,總結一下近一周以來的Windows驅動程序開發學習過程中的經驗:
我目前使用的開發環境是:WINDDK\2600 + Visual Studio 6.0 + Compuware\DriverStudio 3.2
參考的主要入門書是:《Windows 2000/XP WDM 設備驅動程序開發(第二版)》武安河 編著
-----------------------------------------
學習中遇到的問題和解決方法:
(1)拿到附書代碼,運行出了第一個驅動程序CharSample,步驟如下:先雙擊代碼光盤提供的注冊表導入文件
Windows2K-XP.reg,然後運行DriverStudio自帶的EzDriverInstaller工具,打開sys目錄下的驅動安裝配置文件
CharSample.inf,然後Add New Device,提示需要.sys驅動系統文件,找到sys\objchk\i386目錄下的
CharSample.sys文件,確定後將提示The Driver Loaded Successfully!(如果報錯,而且設備前帶!號,一般是因為忘記導入注冊表了)
      如此安裝好驅動以後,就可以運行exe\objchk\i386目錄下的應用程序Test_CharSample.exe進行測試了!
(2)運行成功後,重新編譯時卻總出現錯誤,編譯不過去!
錯誤是:
fatal   error   LNK1181:   cannot   open   input   file   "......\DriverStudio\DriverWorks\lib\I386\checked\vdw_wdm.lib" 通過網上學習和交流找到答案:原來是因為配置開發環境時,漏掉了如下一個步驟:
編譯......\Compuware\DriverStudio\DriverWorks\source目錄下的工程得到vdw_wdm.lib文件!
編譯時,注意用VC打開工程文件後,有兩個工程,要先將VdwLibs工程設為當前Active Project,然後在工具欄上單擊右鍵選擇“組建”,在彈出的編譯工具欄中配置一下編譯平台的設置:選擇Win32 WDM Checked平台(因為我們用的XP),然後編譯就應該可以了,但是還有可能出現編譯錯誤:
fatal error C1083: Cannot open include file: 'warning.h': No such file or directory
為啥呢?因為沒有選擇DDK環境,此時應該在DriverStudio菜單-》DDK Build Setting...中選擇我們先前安裝的DDK的目錄,我安裝的目錄是C:\WINDDK\2600,這樣就可以編譯通過了!
編譯完後會在"......\DriverStudio\DriverWorks\lib\I386\checked\"目錄下生成vdw_wdm.lib文件,做完這些後在去編譯自己編寫的驅動程序工程就不會有上面所列的錯誤了!
當然,也有可能會出現這樣的編譯錯誤:fatal error C1051: program database file, '......\compuware\driverstudio\driverworks\source\obj\i386\wdmchecked\vdw_wdm.pdb', has an obsolete format, delete it and recompile
不過編譯器提示的應該夠清楚了,只要把連接目錄下的文件刪除再編譯一次就可以了!
(3)用向導新建一個驅動工程,進行編譯會產生如下錯誤:
Linking   with   DDK   linker...  
LINK   :   fatal   error   LNK1181:   cannot   open   input   file   'ntstrsafe.lib'  
Error   executing   link.exe.
因為這個文件在xpddk裡面是沒有的,在2003 ddk裡面有,拷貝一個過來就可以了,或者在工程-》設置-》連接選框中把ntstrsafe.lib這個連接項去掉 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved