VC++6.0 DDK 環境配置


我目前用的是VC++6.0含SP6中文版+英文版.VC6SP6.ISO (485 MB)
Windows 2003 DDK.iso(230 MB) 其實別的版本DDK也可以的,我們要的是一些結構&頭文件用來編譯 知道名字后可以xunlei下

把上面的安裝好后Tools->Options->Directories


Include files:
D:\SOFTWARE\WINDDK\3790.1830\INC\DDK\W2K
D:\SOFTWARE\WINDDK\3790.1830\INC\CRT
D:\SOFTWARE\WINDDK\3790.1830\INC\WXP

Library files:
D:\SOFTWARE\WINDDK\3790.1830\LIB\WXP\I386

這些文件是DDK按裝的路徑下。你們相應調整

DriverWizard.rar(windowst程序設計中的DDK編譯器-王艷平)
把上面的解壓后得到DriverWizard.awx文件放到VC按裝目錄下
D:\software\vc6\MSDev98\Template


重啟VC新建就會看到


在右邊輸入工程名DDK 單擊OK
自動創建了一個CPP文件自動生成以下內容:
//////////////////////////////////////////////////
// DDK.cpp文件
extern "C"
{
   #include <ntddk.h>
}

// 驅動程序加載時調用DriverEntry例程
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
{

 // 請視情況返回DriverEntry例程執行結果
 return STATUS_DEVICE_CONFIGURATION_ERROR;
}

單擊DDK.cpp然后delete鍵刪除


project->add to project->files
重命名DDK.CPP改為DDK.C單擊OK
把里面的內容改成:
//////////////////////////////////////////////////
// DDK.c文件
#include <ntddk.h>

// 驅動程序加載時調用DriverEntry例程
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
{

 // 請視情況返回DriverEntry例程執行結果
 return STATUS_DEVICE_CONFIGURATION_ERROR;
}


這個編譯內核環境就建好了。你可以像R3開發一樣編譯了,在工程目錄下就會生成ddk.sys文件

WDK(7600.16385.1) + VC6 驅動開發環境配置(轉http://blog.csdn.net/jifengszf/article/details/5959245

2011-09-16 23:17

(這篇文章貌似被轉過n次,也被改過多次,所以這里特意給出一個它的出生地http://dengkeng.blogbus.com/logs/33757789.html)

     VC6只是一個IDE,可以方便的調用編譯器,鏈接器,頭文件,庫文件,如果編輯和編譯驅動能集成在一起,這樣可以提高開發效率。對於普通的Win32應用程序,VC6已經默認支持了,而對於驅動程序沒有設定好的工程向導。其實驅動程序也就是一個sys,是通過c語言寫成,所以編譯它理論上沒有問題,只是在實際操作上有點麻煩。下面就來說明一下各種平台編譯sys驅動的方法(包括64位平台)

 

先看32位版本驅動的編譯方法(這里假設我們的DDK裝在C:/WINDDK/7600.16385.1目錄):

(1)第一步:

           打開VC建立一個Win32 Application工程,然后選擇An empty Project。

(2)第二步:

            隨便找一個驅動程序,主要是.C,.h及rc資源文件,加入第一步建立的工程

(3)第三步:

           設置VC編譯驅動的環境,這才是重點。

           打開VC的Tool->Options->Directories里設置Include,Lib,及Exectuable File。

 

          設置Include路徑:

           C:/WINDDK/7600.16385.1/INC

           C:/WinDDK/7600.16385.1/INC/wdf

           C:/WinDDK/7600.16385.1/INC/wdf/kmdf/1.9

           C:/WINDDK/7600.16385.1/INC/CRT

          C:/WINDDK/7600.16385.1/INC/DDK

          C:/WINDDK/7600.16385.1/INC/API   (這里可能有些不需要,也可能少了,根據自己的情況在INC目錄下繼續添加就OK了)

 

           設置LIB路徑:

            C:/WINDDK/7600.16385.1/LIB

            C:/WINDDK/7600.16385.1/LIB/WDF/KMDF/I386/1.9

            C:/WINDDK/7600.16385.1/LIB/CRT/I386

            C:/WINDDK/7600.16385.1//LIB/WNET/I386

            設置Executable Files:

            C:/WINDDK/7600.16385.1/BIN/X86/X86

           (這里要注意,一定要在bin/x86目錄下,確切的找到Cl.exe文件,然后添加它所在的目錄,DDK與WDK這個文件所在的路徑並不是一樣的,上面的是我所安裝的WDK中cl.exe所在的路徑,這里要根據不同情況選擇正確的路徑)

(4)第四步:

           這里要設置工程的屬性:

            打開VC->Project菜單,找到C/C++選項卡,在Preprocesser definitions里輸入如下字符串:

           Release下輸入:

           _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG

           Debug下輸入:

          _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG

          在Code Generation里的Calling convention用_STDCALL

         Debug版有個特殊編譯選項 /GZ (注意是大寫的,小寫的不要刪!) 刪掉,否則有鏈接錯誤,chkesp鏈接 不上什么的。

(5)第五步:

         設置link選項卡,將輸出文件名改為sys擴展名,

          在General的Objcet/Library modules,填寫驅動調用的幾個lib:

           Kernel32.lib ntoskrnl.lib hal.lib usbd.lib wmilib.lib wdfdriverentry.lib  wdfldr.lib

          然后進入Output在Entry-point symbol:填DriverEntry

          下面就是往Project Options手動增加一些鏈接選項,復制如下進去:

          /machine:IX86 /driver /subsystem:native /SECTION:INIT,d /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221

          刪除如下選項:

         /subsystem:windows

         /machine代表目標機器類型,/driver代表驅動,/subsystem:native 也是代表驅動。

(這里,我在配置的時候,只是將/subsystem:windows改為:/subsystem:native沒有再進行其它設置,也可成功生成驅動文件,至於有沒有問題,暫時不知道)

 

那么如果我們要編譯64位驅動呢? 這里大家注意一下,64位有兩種,一個是AMD64,一個是IA64,要選定你的目標平台,目前AMD64平台最為流行.

其實編譯成64位也很簡單,只要把32位的配置稍微改一下就行了,我們以編譯AMD64位驅動為例(你會復制VC的工程 Configurations吧,把32位的Relase,Debug各復制一份改名為ReleaseAMD64和DebugAMD64,然后在復制品的 基礎上修改):

1.要修改兩個lib路徑:

C:/2003DDK/LIB/CRT/I386改為:C:/2003DDK/LIB/CRT/amd64

C:/2003DDK/LIB/WNET/I386 改為:C:/2003DDK/lib/wnet/amd64

2.修改編譯器路徑:

C:/2003DDK/BIN/X86

改為:

C:/2003DDK/bin/win64/x86/amd64

C:/2003DDK/BIN/X86 //這句也要存在

3.修改C/C++里的Preprocesser definitions為:

ReleaseAMD64下輸入:

_AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG

DebugAMD64下輸入:

_AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG

4.需要修改link頁里的Project Options,手動改一下:將/machine:IX86改為:/machine:amd64

5.理論上到這里設置就OK了,不過還是有一個鏈接錯誤unresolved external symbol __security_cookie ,只要在鏈接的lib里加入bufferoverflowK.lib (為什么是bufferoverflowK.lib?看這里:http://support.microsoft.com/kb/894573 ) 就可以了。

 

     以上的設置大部分都可以保存在VC工程文件(*.dsp)里,除了設置的include路徑,lib路徑和編譯器路徑,這些路徑是全局的.

所以,你在創建一個新工程時,就不用再設置目錄了,但工程的屬性,還需要設置, 這個時候可以用比較工具(比如WinDiff),把.dsp文件和以前創建工程的.dsp文件比較,把改動之間復制過去即可, 不用再一項一項重新設置了。


免責聲明!

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



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