1. 安裝VS2010,WDK7.60(GRMWDK_EN_7600_1)
2. 新建VC 控制臺(tái)項(xiàng)目(選擇為空項(xiàng)目)

3. 新建項(xiàng)目配置“driver” ,點(diǎn)擊下拉按鈕-點(diǎn)擊(配置管理器)

輸入名稱(driver)點(diǎn)擊確定就可以了,其他的不要?jiǎng)优叮?/p>

完成后的效果!

點(diǎn)擊確定按鈕之后呈現(xiàn)出來的畫面

鼠標(biāo)右擊新建的driver屬性,會(huì)彈出以下窗口!
4. 設(shè)置VC++路徑
<我把wdk安裝在E盤下>
a. 配置可執(zhí)行文件目錄:E:\WinDDK\7600.16385.1\bin\x86;
b. 配置包含目錄:E:\WinDDK\7600.16385.1\inc\ddk
E:\WinDDK\7600.16385.1\inc\crt
E:\WinDDK\7600.16385.1\inc\api
c. 配置庫(kù)目錄: E:\WinDDK\7600.16385.1\lib\win7\i3865
新建C/C++文件 不然無C/C++設(shè)置選項(xiàng)
<剛開始我們創(chuàng)建了一個(gè)空的項(xiàng)目所以項(xiàng)目里沒有c++文件,現(xiàn)在要做的就是在空的項(xiàng)目-源文件-添加一個(gè)新建項(xiàng)c++文件>
常規(guī)
目標(biāo)文件擴(kuò)展名:.sys //必選
6. 設(shè)置C/C++選項(xiàng)
常規(guī)選項(xiàng)卡
1 調(diào)試信息格式(C7 兼容(/Z7) //可選
2 警告等級(jí) (2 級(jí)(/W2) //可選
3 將警告視為錯(cuò)誤 (是(/wx) //可選
優(yōu)化選項(xiàng)卡
優(yōu)化(禁用/Od) //可選
預(yù)處理器
預(yù)處理器定義:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必選
代碼生成
啟用最小重新生成:否 //可選
基本運(yùn)行時(shí)檢查:默認(rèn)值 //可選
運(yùn)行時(shí)庫(kù):多線程調(diào)試(/MTd) 或 多線程(/MT) //建議選 <本人選擇的是多線程調(diào)試(/MTd)>
緩沖區(qū)安全檢查:否 //可選
(可避免出現(xiàn) LINK : error LNK2001: 無法解析外部符號(hào) __security_cookie)
高級(jí)
調(diào)用約定 __stdcall(/Gz) //必選
7. 鏈接器設(shè)置
常規(guī)
啟用增量鏈接:否(/INCREMENTAL:NO) //建議 選上
忽略導(dǎo)入庫(kù):是 // 可選
( 設(shè)置為此值時(shí),必須在附加庫(kù)目錄中加: E:\WinDDK\7600.16385.1\lib\win7\i3865 這樣項(xiàng)目就不會(huì)依賴 IDE 環(huán)境的設(shè) 置)
如果否 ( 設(shè)置為此值時(shí),將依賴 IDE 的環(huán)境的相關(guān)設(shè)置 )
輸入
附加依賴項(xiàng)
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB //必選
//NT式驅(qū)動(dòng) ntoskrnl.lib WDM式驅(qū)動(dòng) wdm.lib
( HalXXX 函數(shù)在Hal.lib, WmiXXX 函數(shù)在 wmilib.lib , NdisXXX函數(shù)在 ndis.lib )
( 必要時(shí)需要增加微軟的標(biāo)準(zhǔn)庫(kù) MSVCRT.LIB MSVCRTD.LIB(調(diào)試庫(kù)) LIBCMT.LIBIBCMTD.LIB(調(diào)試庫(kù)) )
( 如果源碼中有 source 文件,那么該文件的 TARGETLIBS 字段會(huì)列出該項(xiàng) 目需要的庫(kù) )
忽略所有默認(rèn)庫(kù): 是 (/NODEFAULTLIB) //必選
清單文件:
啟用用戶賬戶控制(UAC) 否 //必選
不然會(huì)出現(xiàn) >LINK : fatal error LNK1295: “/MANIFESTUAC”與“/DRIVER”規(guī)范不兼容;鏈接時(shí)不使用“/MANIFESTUAC”
調(diào)試:
生成調(diào)試信息 是(/DEBUG) //可選
生成映像文件:是(/MAP) //可選
映像文件名:$(TargetDir)$(TargetName).map //可選
系統(tǒng)(System)
子系統(tǒng): 控制臺(tái)(/SUBSYSTEM:CONSOLE) //必選
堆棧保留大小:4194304 //可選
堆棧提交大小: 4096 //可選
驅(qū)動(dòng)程序: 驅(qū)動(dòng)程序(/DRIVER) //必選
高級(jí):
入口點(diǎn):DriverEntry //必選
隨機(jī)基址:清空 //把框里的數(shù)據(jù)刪掉。(yes也不是no也不是就是要一個(gè)干干凈凈的文本框) //必選
不然會(huì)出現(xiàn) e:\xxx.sys : fatal error LNK1295:
“/DYNAMICBASE”與“/DRIVER”規(guī)范不兼容;鏈接時(shí)不使用“/DYNAMICBASE”
數(shù)據(jù)執(zhí)行保護(hù)(DEP): 清空 //把框里的數(shù)據(jù)刪掉。(yes也不是no也不是就是要一個(gè)干干凈凈的文本框) //必選
不然會(huì)出現(xiàn) e:\xxx.sys : fatal error LNK1295:
“/NXCOMPAT:NO”與“/DRIVER”規(guī)范不兼容;鏈接時(shí)不使用“/NXCOMPAT:NO”
設(shè)置效應(yīng)和:是(/RELEASE) //可選
基址:0x10000 //建議選上
命令行:/SECTION:INIT,D /IGNORE:4078 (建議不要寫進(jìn)去,會(huì)報(bào)錯(cuò)!)
最后給出一個(gè)超級(jí)簡(jiǎn)單的代碼來測(cè)試一下我們配置的是否成功??
#include "ntddk.h"
NTSTATUS
DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
return STATUS_UNSUCCESSFUL;
}
如果沒有報(bào)錯(cuò)那么恭喜你配置成功了!