青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

aurain
技術(shù)文摘
posts - 137,  comments - 268,  trackbacks - 0

在此下載:/Files/aurain/ddkvs2005build.doc
準(zhǔn)備

DDK版本:Windows DDK 3790

IDEVisual Studio 2005

 

DDK環(huán)境編譯驅(qū)動(dòng)

       這種編譯驅(qū)動(dòng)的辦法是DDK文檔中所提倡的辦法。此種方法需要編寫一個(gè)編譯腳本文件,在這個(gè)腳本中描述了DDK驅(qū)動(dòng)程序的源文件、用到的lib文件和include路徑名、編譯輸出的目錄和文件名等信息。編寫此類腳本對(duì)于Windows程序員可能比較陌生,尤其是當(dāng)源文件較多時(shí),編寫腳本文件可能顯得更如麻煩。在源程序的相同目錄下創(chuàng)建兩個(gè)文件makefileSources,這兩個(gè)文件都是文本文件,內(nèi)容如下。

 

Makefile這個(gè)文件不要修改

#

# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source

# file to this component.  This file merely indirects to the real make file

# that is shared by all the driver components of the Windows NT DDK

#

 

!INCLUDE $(NTMAKEENV)\makefile.def

Sources這個(gè)文件參考實(shí)際情況修改

!if "$(DDK_TARGET_OS)"=="Win2K"

TARGETNAME=Passthru_2000

!elseif "$(DDK_TARGET_OS)"=="WinXP"

TARGETNAME= Passthru _XP

!elseif "$(DDK_TARGET_OS)"=="WinNET"

TARGETNAME= Passthru _03Server

!endif

TARGETPATH=obj

TARGETTYPE=DRIVER

 

C_DEFINES=$(C_DEFINES) -DNDIS_MINIPORT_DRIVER -DNDIS_WDM=1

 

 

!if !defined(DDK_TARGET_OS) || "$(DDK_TARGET_OS)"=="Win2K"

#

# The driver is built in the Win2K build environment

#

C_DEFINES=$(C_DEFINES) -DNDIS40_MINIPORT=1

C_DEFINES=$(C_DEFINES) -DNDIS40=1

!else

#

# The driver is built in the XP or .NET build environment

# So let us build NDIS 5.1 version.

#

C_DEFINES=$(C_DEFINES) -DNDIS51_MINIPORT=1

C_DEFINES=$(C_DEFINES) -DNDIS51=1

!endif

 

# Uncomment the following to build for Win98/SE/WinMe

# This causes several APIs that are not present in Win9X to be

# ifdef'ed out.

# C_DEFINES=$(C_DEFINES) -DWIN9X=1

 

PRECOMPILED_INCLUDE=precomp.h

PRECOMPILED_PCH=precomp.pch

PRECOMPILED_OBJ=precomp.obj

 

!if !defined(DDK_TARGET_OS) || "$(DDK_TARGET_OS)"=="Win2K"

TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib \

$(DDK_LIB_PATH)\ntstrsafe.lib

!else

TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib

!endif

 

USE_MAPSYM=1

 

INCLUDES=

 

SOURCES=\

    miniport.c \

    passthru.c \

    passthru.rc \

    protocol.c \

    PTEXTEND.C \

    filter.c 

7行說(shuō)明此驅(qū)動(dòng)的名稱,這里用到了宏來(lái)控制不同操作系統(tǒng)版本的編譯所需的文件,$(DDK_TARGET_OS)是從外面的命令行傳遞進(jìn)來(lái)的。
9行指明此驅(qū)動(dòng)的類型為NT型驅(qū)動(dòng)。
接著是一些宏定義。

TARGETLIBS是編譯時(shí)要鏈接的庫(kù)
INCLUDES
是附加的包含目錄。
SOURCES
指定源文件。
編寫完這兩個(gè)腳本后,在Windows的開(kāi)始菜單中選擇“Windows XP Checked Build Environment”(或者其它操作系統(tǒng))編譯環(huán)境。一般驅(qū)動(dòng)可以編譯出兩種版本,Checked版本和Free版本。兩者的區(qū)別類似于Win32程序開(kāi)發(fā)的Debug版本和Release版本。

 

IDE環(huán)境編譯驅(qū)動(dòng)

       首先準(zhǔn)備一個(gè)腳本(我這里命名為MakeDrv.bat),內(nèi)容如下:

@echo off

rem -----------------------------------------------------------

rem usage:

rem MakeDrv.bat [<fre | chk>] [<WXP | WNET | W2K>]

rem -----------------------------------------------------------

 

if exist *.sys del *.sys

 

set DDKOPT=%1

if "%DDKOPT%" == "" set DDKOPT=fre

 

set DDKOS=%2

if "%DDKOS%" == "" set DDKOS=WXP

 

pushd .

if not exist c:\winddk\bin\setenv.bat goto SetenvNotFound

call c:\winddk\bin\setenv.bat c:\winddk %DDKOPT% %DDKOS%

popd

if not exist c:\winddk\bin\x86\build.exe goto NoBuildExe

 

c:\winddk\bin\x86\build.exe

if "%DDKOPT%" == "chk" goto :CopyChecked

if "%DDKOPT%" == "fre" goto :CopyFree

goto exit

 

:CopyChecked

if "%DDKOS%" == "WXP" (

if exist .\objchk_wxp_x86\i386\*.sys move .\objchk_wxp_x86\i386\*.sys .\Debug\

)

if "%DDKOS%" == "WNET" (

if exist .\objchk_wnet_x86\i386\*.sys move .\objchk_wnet_x86\i386\*.sys .\Debug\

)

if "%DDKOS%" == "W2K" (

if exist .\objchk_w2k_x86\i386\*.sys move .\objchk_w2k_x86\i386\*.sys .\Debug\

)

goto exit

 

:CopyFree

if "%DDKOS%" == "WXP" (

if exist .\objfre_wxp_x86\i386\*.sys move .\objfre_wxp_x86\i386\*.sys .\Release\

)

if "%DDKOS%" == "WNET" (

if exist .\objfre_wnet_x86\i386\*.sys move .\objfre_wnet_x86\i386\*.sys .\Release\

)

if "%DDKOS%" == "W2K" (

if exist .\objfre_w2k_x86\i386\*.sys move .\objfre_w2k_x86\i386\*.sys .\Release\

)

goto exit

 

:SetenvNotFound

echo Can't found Setenv.bat.

goto exit

 

:NoBuildExe

echo Can't found build.exe

goto exit

 

:exit

del *.log

pause

MakeDrv.bat拷到驅(qū)動(dòng)源目錄下(與源文件同目錄)

說(shuō)明:

1. c:\winddk\bin\setenv.bat,這個(gè)是驅(qū)動(dòng)自帶的,c:\winddk是我驅(qū)動(dòng)安裝目錄(需要根據(jù)實(shí)際情況配置),你也可以設(shè)置環(huán)境變量。

2. 這個(gè)腳本的實(shí)質(zhì)還是調(diào)用驅(qū)動(dòng)自帶的build.exe來(lái)編譯,只不過(guò)在這里我們把需要的參數(shù)封裝了下。

3. 編譯完畢后,我們會(huì)把生成的sys文件拷貝到DebugRelease目錄,中間文件還是放在類似objfre_w2k_x86\i386這種目錄下。

 

       現(xiàn)在打開(kāi)VS2005,新建一個(gè)makefile項(xiàng)目(中文版的叫“生成文件項(xiàng)目”,在vc++——常規(guī))下,保證解決方案同源碼及MakeDrv.bat處于同一目錄。

在向?qū)У?#8220;設(shè)置調(diào)試配置”中,如下圖所示填寫:

在“設(shè)置發(fā)布配置”,不要選擇“與調(diào)試配置相同”,如下圖所示填寫:

單擊“完成”,便新建了一個(gè)工程(當(dāng)然是空的),你可以把已有的代碼添加進(jìn)來(lái),編譯后就會(huì)生成驅(qū)動(dòng)文件了。

IDE可以快速定位錯(cuò)誤,以后編輯也很方便,默認(rèn)是編譯xp checked版本的驅(qū)動(dòng),你可以通過(guò)項(xiàng)目的配置里(項(xiàng)目-項(xiàng)目屬性),選擇“配置熟悉”-NMake,生成命令行修改一下,如希望生成2003 fre版本的驅(qū)動(dòng),則改成MakeDrv.bat fre WNET

以上是兩種介紹編譯驅(qū)動(dòng)的方法,原理都是調(diào)用DDK自帶的工具的了,大家應(yīng)該可以快速的構(gòu)建自己的編譯環(huán)境,有什么不懂我們可以再討論。

下面介紹第三種方法,是“Windows驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳解”中介紹的,摘抄如下:(希望沒(méi)侵犯版權(quán)^_^

VC集成開(kāi)發(fā)環(huán)境編譯HelloDDK1
初次學(xué)習(xí)編寫Windows驅(qū)動(dòng)程序的開(kāi)發(fā)人員,大部分是熟悉VC IDE開(kāi)發(fā)環(huán)境的Windows程序員。他們可能不喜歡用編輯腳本來(lái)描述一個(gè)工程,而是更希望在熟悉的VC IDE環(huán)境下編譯,并且利用VC IDE可以方便快速地對(duì)代碼進(jìn)行交叉索引等操作。本節(jié)將向讀者介紹此種方法。
1)用VC建立一個(gè)新工程。在VC IDE環(huán)境中選擇“File”|“New”,彈出“New”對(duì)話框。在該對(duì)話框中,選擇“Project”選項(xiàng)卡。在“Project”選項(xiàng)卡中,選擇Win32 Application(因?yàn)?span lang=EN-US>VC
并沒(méi)有提供驅(qū)動(dòng)程序的工程,所以在Win32工程的基礎(chǔ)上進(jìn)行修改)。工程名為“DriverDev”,如圖1-5所示。單擊“OK”按鈕,進(jìn)入下一個(gè)對(duì)話框。在該對(duì)話框中,選擇一個(gè)空的工程,如圖1-6所示。

1-5  添加新工程

 

1-6  創(chuàng)建新工程


2)將兩個(gè)源文件Driver.hDriver.cpp拷貝到工程目錄中,并添加到工程中,如圖1-7所示。

1-7  添加新文件到工程


3)增加新的編譯版本,去掉DebugRelease版本,如圖1-8和圖1-9所示。

1-8  配置編譯版本

 

1-9  修改后的check版本

 

1.3.2  VC集成開(kāi)發(fā)環(huán)境編譯HelloDDK2
4)修改工程屬性。選擇“Project”|“Setting”,或者直接按下Alt+F7鍵,彈出“Project Settings”對(duì)話框。在對(duì)話框中,選擇“General”選項(xiàng)卡。將Intermediate filesOutput files改為MyDriver_Check,如圖1-10所示。

1-10  修改輸出目錄

選擇C/C++選項(xiàng)卡,將原有的Project Options內(nèi)容全部刪除,替換成如下內(nèi)容,如圖1-11所示。

/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

 

1-11  修改C++選項(xiàng)卡

選擇Link選項(xiàng)卡,將原有的Project Options內(nèi)容全部刪除,替換成如下內(nèi)容,如圖1-12所示。

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

 

1-12  修改link選項(xiàng)卡

5)修改VClib目錄和include目錄。在VC中選擇“Tools”|“Options”,在彈出的對(duì)話框中選擇“Directories”選項(xiàng)卡。在“Show directories for”下拉菜單中選擇“Include files”菜單。添加“D:\WINDDK\2600.1106\INC\W2K”“D:\WINDDK\2600.1106\INC\DDK\W2K”,并將這兩個(gè)目錄置于最上,如圖1-13a)所示。讀者可將“D:\WINDDK\ 2600.1106”替換成自己的DDK安裝目錄。這里應(yīng)該選擇W2K子目錄,DDK中還會(huì)有相應(yīng)的XP子目錄。因?yàn)?span lang=EN-US>XP驅(qū)動(dòng)編譯時(shí)候需要高版本的VC編譯器,所以這里用的是W2K子目錄,它編譯的代碼完全可以應(yīng)用于Windows 2000Windows XP操作系統(tǒng)下。

   

1-13  設(shè)置include目錄和設(shè)置lib目錄

“Show directories for”下拉菜單中選擇“Library files”菜單,添加目錄“D:\WINDDK\ 2600.1106\LIB\W2K\I386”,并置于最上端,如圖1-13b)所示。

6)編譯。按下F7鍵,和1.3.2節(jié)一樣,同樣會(huì)編譯出一個(gè)HelloDDK.sys文件。

 

posted on 2009-01-20 15:07 閱讀(9350) 評(píng)論(2)  編輯 收藏 引用 所屬分類: windows驅(qū)動(dòng)

FeedBack:
# re: 構(gòu)建Windows驅(qū)動(dòng)開(kāi)發(fā)環(huán)境
2009-05-31 02:11 | ddd
我的QQ號(hào)碼是:1175186433
拜托加我,有問(wèn)題請(qǐng)教  回復(fù)  更多評(píng)論
  
# re: 構(gòu)建Windows驅(qū)動(dòng)開(kāi)發(fā)環(huán)境
2013-04-06 00:36 | 被上面代碼害慘的人
大哥你測(cè)試過(guò)再發(fā)出來(lái)啊,我被你害慘了
早知道我就不省這點(diǎn)時(shí)間,直接抄書不來(lái)復(fù)制你的了.  回復(fù)  更多評(píng)論
  

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用鏈接

留言簿(17)

隨筆分類(138)

隨筆檔案(137)

網(wǎng)絡(luò)開(kāi)發(fā)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 502446
  • 排名 - 37

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久av在线看| 欧美国产日韩精品| 久久久久久久999| 久久久精品国产99久久精品芒果| 久久精品国产精品亚洲综合| 久久久久国产精品厨房| 久久久久网址| 欧美电影免费观看高清完整版| 欧美国产成人精品| 亚洲欧洲综合| 亚洲精选视频免费看| 一区二区日本视频| 亚洲欧美日韩网| 久久裸体艺术| 欧美久久综合| 国产精品一级二级三级| 国内精品久久久| 亚洲人成在线播放| 亚洲一区视频在线| 久久久久国产精品午夜一区| 欧美成人免费网站| 日韩视频一区二区三区在线播放免费观看 | 欧美剧在线免费观看网站| 欧美成人福利视频| 欧美日韩一级黄| 国产亚洲欧美另类一区二区三区| 在线精品国产欧美| 亚洲视频www| 久久久国产精品一区| 亚洲国产日韩综合一区| 亚洲一区二区三区三| 久久午夜精品一区二区| 欧美日韩在线三级| 合欧美一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 午夜精品影院| 亚洲国产黄色片| 亚洲女人天堂av| 欧美成人中文字幕在线| 国产酒店精品激情| 亚洲精选中文字幕| 久久久久久亚洲精品中文字幕| 亚洲黄色免费电影| 欧美一二三区精品| 欧美日韩黄视频| 在线成人激情视频| 亚洲欧美在线网| 欧美伊人久久| 亚洲福利在线看| 亚洲综合成人婷婷小说| 久久综合一区二区| 国产精品视频一二三| 亚洲国产三级在线| 久久精品国产99精品国产亚洲性色 | 免费亚洲电影| 亚洲一区二区伦理| 欧美日韩伦理在线免费| 亚洲第一久久影院| 久久国产精品99国产精| 中国女人久久久| 欧美国产视频一区二区| 一区二区在线不卡| 欧美一级理论片| 99热这里只有精品8| 免费观看一级特黄欧美大片| 国产一区美女| 欧美一区亚洲二区| 在线综合视频| 欧美三级免费| 亚洲欧美综合精品久久成人| 欧美在线网站| 999亚洲国产精| 男人插女人欧美| 伊人婷婷欧美激情| 久久精品亚洲一区二区| 亚洲一品av免费观看| 欧美日本不卡| 日韩视频二区| 亚洲国产欧美在线人成| 美女图片一区二区| 一区二区视频在线观看| 久久人人97超碰人人澡爱香蕉| 亚洲欧美日韩一区二区三区在线观看| 欧美天堂亚洲电影院在线播放| 亚洲麻豆av| 91久久视频| 欧美日本国产| 中国av一区| 99精品99久久久久久宅男| 欧美日韩久久精品| 亚洲视频中文字幕| 99riav久久精品riav| 欧美日韩一区二| 中文有码久久| 亚洲视频在线观看免费| 国产精品久久久久av| 先锋影音国产精品| 性欧美8khd高清极品| 国产午夜精品美女毛片视频| 久久av一区二区三区漫画| 午夜天堂精品久久久久| 国模吧视频一区| 美女黄毛**国产精品啪啪| 久久综合九色| 亚洲九九九在线观看| 亚洲精品系列| 国产精品入口福利| 久久精品伊人| 美女成人午夜| 一片黄亚洲嫩模| 亚洲视频在线免费观看| 国产欧美日韩综合| 蜜月aⅴ免费一区二区三区| 欧美a级片一区| 国产精品99久久久久久人| 亚洲天堂久久| 国内精品久久久久久久影视蜜臀 | 老司机午夜精品视频| 亚洲精品日韩综合观看成人91| 亚洲欧洲精品成人久久奇米网| 欧美日韩一区二区三区在线视频 | 国产欧美亚洲一区| 老鸭窝91久久精品色噜噜导演| 蜜臀久久99精品久久久久久9| 一区二区三区www| 午夜欧美大片免费观看| 亚洲承认在线| 一区二区三区 在线观看视| 国产一区二区成人| 亚洲国产成人高清精品| 国产精品日韩一区二区三区| 美日韩免费视频| 欧美日韩在线看| 久久亚洲私人国产精品va媚药 | 久久精品国产免费观看| 亚洲人成人77777线观看| 欧美在线视频观看免费网站| 蜜臀99久久精品久久久久久软件| 欧美第十八页| 亚洲欧美在线一区| 毛片基地黄久久久久久天堂| 亚洲一区二区三区影院| 久久久最新网址| 亚洲午夜精品一区二区三区他趣| 欧美在线综合视频| 在线亚洲一区观看| 久久久91精品国产一区二区三区| 一区二区三区你懂的| 久久久久久久久一区二区| 中文日韩在线视频| 久久综合伊人| 久久精品国产成人| 欧美日韩视频在线| 欧美成人午夜免费视在线看片| 国产精品久久影院| 亚洲国产一区在线| 韩国av一区二区三区| 亚洲天堂av在线免费| 亚洲日本中文字幕区| 久久国产精品久久国产精品| 亚洲天堂av在线免费| 欧美wwwwww| 久热精品视频在线观看一区| 国产精品久久久一区麻豆最新章节| 亚洲电影在线播放| 激情久久综合| 香蕉久久国产| 午夜欧美理论片| 欧美日韩国产在线播放| 欧美国产一区二区在线观看| 国产一区在线观看视频| 国产一区二区三区av电影| 久久久精品一区二区三区| 欧美日韩国产在线| 欧美丰满高潮xxxx喷水动漫| 国产亚洲精品久久久久久| 亚洲图片激情小说| 一区二区高清在线观看| 嫩草国产精品入口| 蜜臀99久久精品久久久久久软件| 国产日韩精品一区二区三区在线 | 亚洲网站视频福利| 一区二区三区高清在线观看| 欧美77777| 欧美激情四色 | 你懂的视频欧美| 国产有码在线一区二区视频| 亚洲男人第一网站| 欧美一级淫片播放口| 国产精品久久久999| 一区二区三区久久| 亚洲在线播放| 国产精品久久久久久久久搜平片 | 欧美午夜激情小视频| 亚洲精品日韩精品| 一区二区三区欧美亚洲| 欧美日韩精品三区| 欧美a级在线| 欧美成人在线影院| 亚洲国产精品一区|