WINDOWS7(vs2012+wdk7.6) 配置驅動開發環境


合肥程序員群:49313181。    合肥實名程序員群:128131462 (不願透露姓名和信息者勿加入)
Q  Q:408365330     E-Mail:egojit@qq.com

1.新建C++Win32控制台空項目

WDK控制台

 

2.  新建項目Driver”配置“ ,點擊下拉按鈕-點擊(配置管理器)

配置管理器

 

3.輸入名稱(Driver),其他的不需要任何修改!

WDK添加配置

 

4.打開屬性管理器,右擊彈出Driver的屬性

WDK屬性管理器

右擊打開Driver屬性分別配置相關屬性就OK了。

5.最后就一步步配置相關屬性

一.  設置VC++路徑

<我把wdk安裝在D盤下>
a.  配置可執行文件目錄:D:\WinDDK\7600.16385.1\bin\x86;
b.  配置包含目錄:D:\WinDDK\7600.16385.1\inc\ddk 
                        D:\WinDDK\7600.16385.1\inc\crt
                        D:\WinDDK\7600.16385.1\inc\api  
c.  配置庫目錄:    D:\WinDDK\7600.16385.1\lib\win7\i3865

新建C/C++文件 不然無C/C++設置選項

<剛開始我們創建了一個空的項目所以項目里沒有c++文件,現在要做的就是在空的項目-源文件-添加一個新建項c++文件>

常規 
目標文件擴展名:.sys          //必選

二.  設置C/C++選項
常規選項卡
1 調試信息格式(C7 兼容(/Z7)        //可選
2 警告等級     (2 級(/W2)          //可選
3 將警告視為錯誤  (是(/wx)         //可選
優化選項卡
優化(禁用/Od)                          //可選
預處理器
預處理器定義:WIN32=100;_X86_=1;WINVER=0x501;DBG=1         //必選
代碼生成
       啟用最小重新生成:否                                        //可選    

       基本運行時檢查:默認值                                     //可選
       運行時庫:多線程調試(/MTd)  或  多線程(/MT)                 //建議選 <本人選擇的是多線程調試(/MTd)>
       緩沖區安全檢查:否                                            //可選
  (可避免出現  LINK : error LNK2001:  無法解析外部符號  __security_cookie)
高級
     調用約定  __stdcall(/Gz)                                       //必選

三.  鏈接器設置
常規
     啟用增量鏈接:否(/INCREMENTAL:NO)                           //建議 選上
     忽略導入庫:是                                                  // 可選 
     ( 設置為此值時,必須在附加庫目錄中加: E:\WinDDK\7600.16385.1\lib\win7\i3865  這樣項目就不會依賴 IDE 環境的設 置) 

     如果否  (  設置為此值時,將依賴  IDE  的環境的相關設置  )
輸入
附加依賴項
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB       //必選   

//NT式驅動  ntoskrnl.lib    WDM式驅動    wdm.lib
( HalXXX 函數在Hal.lib, WmiXXX 函數在  wmilib.lib  , NdisXXX函數在  ndis.lib )
(  必要時需要增加微軟的標准庫  MSVCRT.LIB MSVCRTD.LIB(調試庫) LIBCMT.LIBIBCMTD.LIB(調試庫) )
  (  如果源碼中有  source  文件,那么該文件的  TARGETLIBS  字段會列出該項 目需要的庫  )

忽略所有默認庫:    是 (/NODEFAULTLIB)                 //必選  

清單文件:
  啟用用戶賬戶控制(UAC)   否  //必選 

不然會出現  >LINK : fatal error LNK1295: “/MANIFESTUAC”與“/DRIVER”規范不兼容;鏈接時不使用“/MANIFESTUAC”  
調試:
生成調試信息  是(/DEBUG)                                              //可選
生成映像文件:是(/MAP)                                               //可選
映像文件名:$(TargetDir)$(TargetName).map                     //可選
系統(System)
     子系統:  控制台(/SUBSYSTEM:CONSOLE)                                //必選
     堆棧保留大小:4194304                                              //可選
     堆棧提交大小:  4096                                                //可選
     驅動程序:    驅動程序(/DRIVER)                                        //必選  
高級:
    入口點:DriverEntry                                                    //必選
    隨機基址:清空           //把框里的數據刪掉。(yes也不是no也不是就是要一個干干凈凈的文本框)   //必選
    不然會出現  e:\xxx.sys : fatal error LNK1295:
“/DYNAMICBASE”與“/DRIVER”規范不兼容;鏈接時不使用“/DYNAMICBASE”

    數據執行保護(DEP):  清空 //把框里的數據刪掉。(yes也不是no也不是就是要一個干干凈凈的文本框) //必選  
     不然會出現  e:\xxx.sys : fatal error LNK1295:       
“/NXCOMPAT:NO”與“/DRIVER”規范不兼容;鏈接時不使用“/NXCOMPAT:NO”   

設置效應和:是(/RELEASE)                              //可選

基址:0x10000                                           //建議選上 

最后用一個簡單代碼測試一下我們配置的是否成功??

#include "ntddk.h"

NTSTATUS 
DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) 
{ 
return STATUS_UNSUCCESSFUL; 
}

恭喜了,大功告成。所有這些都是在你已經安裝WDK7.6的基礎上的。

最后貼上我大功告成后的成果:

WDK配置成功

 

WDK成果

這個.sys就是生成的驅動文件了,這個成果我可是經過九四一生啊。:)。記得build -cZ

版權:歸博客園和Egojit所有,轉載請標明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM