天天看點

VC6.0 +WDK 開發驅動的環境配置

VC6.0 +WDK 開發驅動的環境配置

1.安裝好VC6和DWK,先後順序無關。

    從開始菜單找到WDK的程式目錄,進入“Windows XP Checked Build Environment”,輸入指令"build",此時WDK将會把自己進行編譯,大約需要1分鐘。

2.VC6設定Include/Lib/Executable目錄。

    設定為自己需要編譯的平台的各個目錄即可, Include要確定找到ntddk.h等,Lib與Include對應,Executable 要確定能找到cl.exe

例如XP平台下設定為:

include包含部分:

C:\WinDDK\7600.16385.1\inc\ddk

C:\WinDDK\7600.16385.1\inc\api

C:\WinDDK\7600.16385.1\inc\crt

lib連接配接庫包含部分:

C:\WINDDK\7600.16385.1\LIB\WXP\I386

C:\WINDDK\7600.16385.1\LIB\WIN7\I386

執行檔案包含:

C:\WINDDK\7600.16385.1\BIN

C:\WINDDK\7600.16385.1\BIN\X86

C:\WinDDK\7600.16385.1\bin\x86\x86

對于VC原有的路徑,Include 和 Lib建議都删除掉,而Executable則将你新加的置頂,順序不能錯。其餘建議保留(雖然編譯驅動不會使用VC的Bin目錄下的ml.exe、link.exe 等,但vc的代碼提示等功能是需要bin目錄下的一些程式來完成的,是以還是至少要保留VC原有的Bin目錄,但必須在DDK的之後)。

3.建立一個空工程,Exe或者Dll都可以,然後直接修改工程屬性:

要改的地方不少,描述各個選項還不如直接記錄個文本的,清空C/C++和Link下面的Option文本框,按下面的填寫。

C/C++ 選項填寫:

/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c

LINK 選項填寫:

    NT式驅動為

ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078

    WDM式驅動為

wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Check/HelloWDM.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078 

4.儲存配置,現在給這個空工程建一個c檔案,複制以下内容:

#include <ntddk.h>
NTSTATUS DriverEntry(
        IN PDRIVER_OBJECT DriverObject,
        IN PUNICODE_STRING RegistryPath
        )
{
        NTSTATUS status = STATUS_UNSUCCESSFUL;
        return status;
}      

編譯通過則配置成功!!!

----------------------------------------------------------------------------------------------

Vc6 英文版;(随處都有)

WDK3790.1830(1830_usa_ddk.iso的解壓檔案)或者2006.1106版本;

(​​http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso​​)

DriverStudio3.2 。(随處都有)

二、安裝說明

首先安裝Vc6,Vc6正常安裝。

第二安裝WDK,安裝到D:/WINDDK目錄下,把所有的例子全部勾選,安裝。

         WDK的安裝比較費時,期間如果已經安裝AVAST或者360的話記得在它們提示是否允許時,允許移動檔案或允許安裝。

最後安裝DriverStudio3.2。建議安裝到C槽的預設目錄下,以便和以後的文檔相對應。

三、參考用書

隻有一本經典的參考用書,張帆的《Windows驅動開發技術詳解》( 珍藏版)。

CD光牒中有很多的參考代碼,可以直接使用。

四、用WDK的build工具編譯Windows驅動

工具位置:開始->Development Kit->Windows DDK 3790.1830->Build Environment->Windows XP->Windows XP Checked Build Environment(建議把它發送到桌面友善以後的編譯)。

需要的檔案:需要cpp,h,SOURCES,MakeFile四種檔案。其中Makefile不用自己編寫,需要自己編寫SOURCES檔案。編寫的具體方法見參考用書。

編譯方法:在build工具中把目錄切換到工程目錄下(如果切換不友善,可以先在D:/WINDDK/3790.1183/下建立一個exam檔案夾,然後把工程的目錄複制到exam檔案夾中,這樣可以很友善的切換到工程目錄下)。最後鍵入:build即可。編譯如果成功後可以在工程目錄中找到.sys檔案,這個檔案就是我們的最終要得到的二進制檔案。

五、用VC編譯Windows驅動時設定的改動

1、建立一個VC工程,選擇Win32 Application工程。選擇空的工程。

2、把寫好的cpp和h檔案(或者自己在vc中寫的)拷貝到這個空工程的目錄下。在project->add to project->files中把這兩個檔案包含進來。

3、在build->Configurationz中,添加一個項目Driver Check Edtion,選擇Win32 。這時會産生一個新的Win32 Driver Check Edtion項目。之後把原來的兩個項目都删除。

4、在Project->Settings->General下,将intermediate files和Output files中的内容都改為MyDriver_Check

5、在Project->Settings->c/c++下,把Project Options的原來内容全部删除,改為:

/nologo  /Gz  /MLd  /W3  /WX  /Z7  /Od  /D  WIN32=100  /D _X86=1

/D WINVER=0x500  /D DBG=1  /Fo"MyDriver_Check/"  /Fd"MyDriver_Check/"

/FD =1  /c

6、在Project->Settings->link下,把Project Options的原來内容全部删除,改為:

ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"

/subsystem:console /incremental:no /pdb:"MyDriver_Check/hellodriv.pdb"

/debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/hellodriv.sys"

/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE

/IGNORE:4078

7、在Tool->Options->Directories中選擇,Show directories for:Include files,

添加一項:D:/WINDDK/3790.1830/INC/W2K,前移到第一位置。

再添加一項:D:/WINDDK/3790.1830/INC/DDK/W2K,前移到第二位置。

再添加一項:D:/WINDDK/3790.1830/INC/DDK/WDM/W2K,前移到第三位。

(用浏覽的方式選擇檔案夾)

8、在Tool->Options->Directories中選擇,Show directories for:Library files,

添加一項:D:/WINDDK/3790.1830/LIB/W2K/I386,前移到第一位。

(用浏覽的方式選擇檔案夾)

9、至此設定全部完成,可以按下F7編譯出.sys檔案了。(不要按Ctrl+F5,不能産生可執行檔案)

六、build工具的檔案轉換為VC可編譯檔案的方法

用build工具進行編譯時,要用到一個SOURCES檔案(沒有字尾,隻有檔案名)和一個MakeFile檔案(沒有字尾,隻有檔案名)。

現在假設你已經有這兩個檔案和相應的cpp和h檔案,并且能夠用build編譯成功,那麼我們可以利用這個SOURCES檔案轉換為VC6可以編譯的工程檔案(.dsw和.dsp)。方法如下:

1、開始->Compuware DriverStudio->Develop->DDK sources to vcproj Converter

2、打開這個工具之後,選擇File->Open,找到對應的SOURCES檔案。

3、選擇Convert->Convert DDK dir/sources file,會出現一個對話框。

4、在對話中選擇,VC++6 WorkSpace,按下OK。

5、至此,你會發現,在SOURCE檔案所在的目錄下多了兩個檔案.dsw和.dsp,如果在該目錄下還有對應的cpp和h檔案的話,就可以利用VC6打開這個工程了,編譯後會得到相同的.sys檔案。

如果還是提示SXXX.h找不到,再把D:/WINDDK/3790.1830/INC/CRT添加進去即可。

1.安裝好VC6和DWK,先後順序無關。

    從開始菜單找到WDK的程式目錄,進入“Windows XP Checked Build Environment”,輸入指令"build",此時WDK将會把自己進行編譯,大約需要1分鐘。

2.VC6設定Include/Lib/Executable目錄。

    設定為自己需要編譯的平台的各個目錄即可, Include要確定找到ntddk.h等,Lib與Include對應,Executable 要確定能找到cl.exe

例如XP平台下設定為:

include包含部分:

C:\WinDDK\7600.16385.1\inc\ddk

C:\WinDDK\7600.16385.1\inc\api

C:\WinDDK\7600.16385.1\inc\crt

lib連接配接庫包含部分:

C:\WINDDK\7600.16385.1\LIB\WXP\I386

C:\WINDDK\7600.16385.1\LIB\WIN7\I386

執行檔案包含:

C:\WINDDK\7600.16385.1\BIN

C:\WINDDK\7600.16385.1\BIN\X86

C:\WinDDK\7600.16385.1\bin\x86\x86

對于VC原有的路徑,Include 和 Lib建議都删除掉,而Executable則将你新加的置頂,順序不能錯。其餘建議保留(雖然編譯驅動不會使用VC的Bin目錄下的ml.exe、link.exe 等,但vc的代碼提示等功能是需要bin目錄下的一些程式來完成的,是以還是至少要保留VC原有的Bin目錄,但必須在DDK的之後)。

3.建立一個空工程,Exe或者Dll都可以,然後直接修改工程屬性:

要改的地方不少,描述各個選項還不如直接記錄個文本的,清空C/C++和Link下面的Option文本框,按下面的填寫。

C/C++ 選項填寫:

/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c

LINK 選項填寫:

    NT式驅動為

ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078

    WDM式驅動為

wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Check/HelloWDM.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078 

4.儲存配置,現在給這個空工程建一個c檔案,複制以下内容:

#include <ntddk.h>
NTSTATUS DriverEntry(
        IN PDRIVER_OBJECT DriverObject,
        IN PUNICODE_STRING RegistryPath
        )
{
        NTSTATUS status = STATUS_UNSUCCESSFUL;
        return status;
}      

編譯通過則配置成功!!!

----------------------------------------------------------------------------------------------

Vc6 英文版;(随處都有)

WDK3790.1830(1830_usa_ddk.iso的解壓檔案)或者2006.1106版本;

(​​http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso​​)

DriverStudio3.2 。(随處都有)

二、安裝說明

首先安裝Vc6,Vc6正常安裝。

第二安裝WDK,安裝到D:/WINDDK目錄下,把所有的例子全部勾選,安裝。

         WDK的安裝比較費時,期間如果已經安裝AVAST或者360的話記得在它們提示是否允許時,允許移動檔案或允許安裝。

最後安裝DriverStudio3.2。建議安裝到C槽的預設目錄下,以便和以後的文檔相對應。

三、參考用書

隻有一本經典的參考用書,張帆的《Windows驅動開發技術詳解》( 珍藏版)。

CD光牒中有很多的參考代碼,可以直接使用。

四、用WDK的build工具編譯Windows驅動

工具位置:開始->Development Kit->Windows DDK 3790.1830->Build Environment->Windows XP->Windows XP Checked Build Environment(建議把它發送到桌面友善以後的編譯)。

需要的檔案:需要cpp,h,SOURCES,MakeFile四種檔案。其中Makefile不用自己編寫,需要自己編寫SOURCES檔案。編寫的具體方法見參考用書。

編譯方法:在build工具中把目錄切換到工程目錄下(如果切換不友善,可以先在D:/WINDDK/3790.1183/下建立一個exam檔案夾,然後把工程的目錄複制到exam檔案夾中,這樣可以很友善的切換到工程目錄下)。最後鍵入:build即可。編譯如果成功後可以在工程目錄中找到.sys檔案,這個檔案就是我們的最終要得到的二進制檔案。

五、用VC編譯Windows驅動時設定的改動

1、建立一個VC工程,選擇Win32 Application工程。選擇空的工程。

2、把寫好的cpp和h檔案(或者自己在vc中寫的)拷貝到這個空工程的目錄下。在project->add to project->files中把這兩個檔案包含進來。

3、在build->Configurationz中,添加一個項目Driver Check Edtion,選擇Win32 。這時會産生一個新的Win32 Driver Check Edtion項目。之後把原來的兩個項目都删除。

4、在Project->Settings->General下,将intermediate files和Output files中的内容都改為MyDriver_Check

5、在Project->Settings->c/c++下,把Project Options的原來内容全部删除,改為:

/nologo  /Gz  /MLd  /W3  /WX  /Z7  /Od  /D  WIN32=100  /D _X86=1

/D WINVER=0x500  /D DBG=1  /Fo"MyDriver_Check/"  /Fd"MyDriver_Check/"

/FD =1  /c

6、在Project->Settings->link下,把Project Options的原來内容全部删除,改為:

ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"

/subsystem:console /incremental:no /pdb:"MyDriver_Check/hellodriv.pdb"

/debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/hellodriv.sys"

/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE

/IGNORE:4078

7、在Tool->Options->Directories中選擇,Show directories for:Include files,

添加一項:D:/WINDDK/3790.1830/INC/W2K,前移到第一位置。

再添加一項:D:/WINDDK/3790.1830/INC/DDK/W2K,前移到第二位置。

再添加一項:D:/WINDDK/3790.1830/INC/DDK/WDM/W2K,前移到第三位。

(用浏覽的方式選擇檔案夾)

8、在Tool->Options->Directories中選擇,Show directories for:Library files,

添加一項:D:/WINDDK/3790.1830/LIB/W2K/I386,前移到第一位。

(用浏覽的方式選擇檔案夾)

9、至此設定全部完成,可以按下F7編譯出.sys檔案了。(不要按Ctrl+F5,不能産生可執行檔案)

六、build工具的檔案轉換為VC可編譯檔案的方法

用build工具進行編譯時,要用到一個SOURCES檔案(沒有字尾,隻有檔案名)和一個MakeFile檔案(沒有字尾,隻有檔案名)。

現在假設你已經有這兩個檔案和相應的cpp和h檔案,并且能夠用build編譯成功,那麼我們可以利用這個SOURCES檔案轉換為VC6可以編譯的工程檔案(.dsw和.dsp)。方法如下:

1、開始->Compuware DriverStudio->Develop->DDK sources to vcproj Converter

2、打開這個工具之後,選擇File->Open,找到對應的SOURCES檔案。

3、選擇Convert->Convert DDK dir/sources file,會出現一個對話框。

4、在對話中選擇,VC++6 WorkSpace,按下OK。

繼續閱讀