[转]VC的DDK编译环境构建
http://blog.csdn.net/skdev/article/details/1336935
 
1 环境状况
Windows XP SP1 NTDDK(win2kddk) VC++6.0
NTDDK所在路径:D:/NTDDK
DDK 编译所需的文件:SetEnvCallBuild.bat BuildDriver.bat makefile makefile.mk source
SetEnvCallBuild.bat 是命令行(msdos)执行文件,参数:checked WXP或free WXP 两种
BuildDriver.bat是SetEnvCallBuild.bat调用的文件。
Makefile makefile.mk source 是build –cZ 用到的文件;makefile和makefile.mk不用修改,souce包含要编译的文件,用记事本编辑。
以下用NTDDK/src/wdm/usb/usbview为例
2 各文件的代码
文件名 SetEnvCallBuild.bat
//-----------------------------------
@echo on
REM %1
REM %2
 
set DDKPATH=D:/NTDDK
set PRJDRV=E:
set PRJPATH=driver
 
echo s1 %1
echo s2 %2
 
call BuildDriver.bat %DDKPATH% %PRJDRV% %PRJPATH% %1 %2
 
set DDKPATH=
set PRJDRV=
set PRJPATH=
----------------------------------------//
注:DDKPATH=D:/NTDDK为NTDDK安装的路径,PRJDRV=E E表示要编译文件所在盘符即E盘,PRJPATH=driver driver表示要编译文件所在的文件夹。
文件名 BuildDriver.bat
//------------------------------------
@echo off
REM %1
REM %2
REM %3
REM %4
REM %5
 
echo n1 %1
echo n2 %2
echo n3 %3
echo n4 %4
echo n5 %5
 
if %1=="" goto usage
if %3=="" goto usage
if not exist %1/bin/setenv.bat goto usage
call %1/bin/setenv.bat %1 %4 %5
%2
cd %3
build –cZ
 
goto exit
 
:usage
echo usage   Make sure your DDK path is valid!
:exit
 
---------------------------------------------//
文件名 makefile
//--------------------------------------------
#############################################################################
#
#   Copyright (C) Microsoft Corporation 1992-1997
#   All Rights Reserved.
#
#   makefile for USBVIEW
#
#############################################################################
 
# Paths are relative to the directory containing this file.
 
!IFDEF WIN95_BUILD
 
# Root of the SLM tree (i.e. the directory containing the DEV project).
!IFNDEF ROOT
ROOT = ../../../..
!ENDIF
 
DEFAULTVERDIR   = retail
VERSIONLIST     = retail debug
IS_32           = TRUE
 
COMMONMKFILE    = makefile.mk
 
!include $(ROOT)/DEV/MASTER.MK
 
 
!ELSE
 
!include $(NTMAKEENV)/makefile.def
 
!ENDIF
 
--------------------------------------//
文件名 makefile.mk
//-----------------------------------------
#############################################################################
#
#   Copyright (C) Microsoft Corporation 1996-1998
#   All Rights Reserved.
#
#   makefile.mk for USBVIEW
#
#############################################################################
 
ROOT            = ../../../../..
NAME            = USBVIEW
SRCDIR          = ..
IS_32           = TRUE
WANT_C1132      = TRUE
WANT_WDMDDK     = TRUE
IS_DDK          = TRUE
 
L32EXE          = $(NAME).exe
L32RES          = ./$(NAME).res
L32LIBSNODEP    = kernel32.lib user32.lib gdi32.lib comctl32.lib libc.lib cfgmgr32.lib
TARGETS         = $(L32EXE)
DEPENDNAME      = $(SRCDIR)/depend.mk
RCFLAGS         = -I$(ROOT)/DEV/INC
 
# Enable read-only string pooling to coalesce all the redundant strings
#
CFLAGS          = -GF
 
L32OBJS         =   usbview.obj /
                    enum.obj    /
                    display.obj /
                    debug.obj   /
                    devnode.obj /
                    dispaud.obj
 
!INCLUDE $(ROOT)/DEV/MASTER.MK
----------------------------------------//
 
文件名 source
//--------------------------------------------
TARGETNAME=usbview
TARGETTYPE=PROGRAM
TARGETPATH=obj
 
UMTYPE=windows
UMENTRY=winmain
UMBASE=0x1000000
 
TARGETLIBS=/
        $(SDK_LIB_PATH)/kernel32.lib    /
        $(SDK_LIB_PATH)/user32.lib      /
        $(SDK_LIB_PATH)/gdi32.lib       /
        $(SDK_LIB_PATH)/comctl32.lib    /
        $(SDK_LIB_PATH)/cfgmgr32.lib
 
INCLUDES=../inc;../../inc
 
SOURCES=usbview.c   /
        display.c   /
        enum.c      /
        debug.c     /
        devnode.c   /
        dispaud.c   /
        usbview.rc
-------------------------------------------//
SOURCES 所列的文件为需编译的。
3 创建工程
1)     新建工程
选择makefile
2)     在Debug中创建check版的驱动
注:WXP 为Windows XP
3)     在Release中创建free版驱动
4)     导入文件
5)     编译工程
6)     生成结果
生成objchk/i386中的usbview.exe
 
说白了原理与在dos编译一样
如下为dos编译方法
setenv即为setenv.bat 其参数为ntddk所在路径
表示环境创建成功
然后到要编译的目录下运行build –cZ 注意:该目录下必需的makefile makefile.mk source文件
运行结果
完成。

参考:啊良的”使用VC6编译Driver”

[转]VC的DDK编译环境构建的更多相关文章

  1. VC++6.0编译环境介绍

    大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解"它.因为它只是一个工具,我 ...

  2. 在CentOS上构建.net自动化编译环境

             我们知道在Windows上我们很容易构建于MSBuild的自动化编译环境,那么在CentOS也是可以的,主要是需要Mono. 在这儿我们选择Jenkins+Gitlab+Mono在C ...

  3. 【Android开发】构建Android源码编译环境

    原文:http://android.eoe.cn/topic/android_sdk 构建Android源码编译环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  4. 迁移到MSYS2 与 Qt 工具链注意的几个事情(g++在链接时,符号依赖项查找遵循从左至右的顺序,但qmake会自动合并造成错误。使用脚本给Mingw32-make创造出一个局部的VC编译环境)

    Microsoft Visual Studio 2015社区版提供了强大的开发体验,且 Qt 提供了预编译版本.然而,由于客户提出兼容Windows XP ~ Windows 8.1 这样宽泛的环境要 ...

  5. 利用 Docker 构建一个简单的 java 开发编译环境

    目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本.如果想切换自己本地的 Java 开发环境 ...

  6. VC++2010下编译STLport,Boost

    VC++2010下编译STLport,Boost 最近在想向Boost转移,努力掌握Boost代码的过程中, STLport版本:5.2.1 Boost版本:1.4.6.1 (1.4.7.0也OK) ...

  7. windows下安装python的C扩展编译环境(解决“Unable to find vcvarsall.bat”)

    个人文章除注明转载外,均为个人原创或者翻译. 个人文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本文链接:http://www.cnblogs.com/f ...

  8. VS编译环境中TBB配置和C++中lambda表达式

    TBB(Thread Building Blocks),线程构建模块,是由Intel公司开发的并行编程开发工具,提供了对Windows,Linux和OSX平台的支持. TBB for Windows ...

  9. Windows下用VC与QT编译MPI程序入门

    MPI是信息传递接口的简称,常用来进行进程间.机器间的通信与并行计算.一般而言,MPI都会部署在*nix系统下,在Windows下面直接编译.配置MPI并不容易.本文利用MS提供的编译好的MPI的版本 ...

随机推荐

  1. 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory-I ...

  2. SVN与TortoiseSVN实战:冲突详解(二)

    硬广:<SVN与TortoiseSVN实战>系列已经写了四篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  3. WF4与MVC结合示例

    很多初学者,首先最想解决的问题是:如何将WF与MVC程序相结合.由于Web程序属于长时间运行的流程,因此持续化功能的运用就非常重要了. 本文将结合书签.WorkflowApplication.生命周期 ...

  4. 在python3.5中使用pip

    我centos7上同时有python2.7和python3.5.现在希望能在使用python3.5时也能用pip.本来这应该是很容易的一件事,然而我一步步掉进坑里.. 官网安装pip的方法是,http ...

  5. UnityVS 2013的使用

    如果已安装旧版,先卸载,然后在安装新版本: 安装完毕后,打开Unity,在Build Settings中设置: Import the Visual Studio Tools Unity package ...

  6. Loadrunner:安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist

    [问题现象] 安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist: [解决办法] 手动安装缺少的组件,LR安装包中已自带该组件,为何不自动捕捉异常去获取该自带的组件去安 ...

  7. Unieap3.5-前台js用SQL语句执行数据请求

    执行UPDATE var sql=" update T_SS_SETTLEMENT_RECORD "+ " set CINVOICE_INFO_FLAG='Y',&quo ...

  8. THINKPHP 清除HTML注释、换行符、空格、制表符等

    thinkphp3.2 3.2中取消了配置文件中的 'TMPL_STRIP_SPACE' 属性,所以我们先来修改:\ThinkPHP\Library\Think\Template.class.php ...

  9. 魔兽塔防游戏android源码

    魔兽塔防是一款经典的游戏,当年在pc机器上玩过魔兽的人应该都玩过类似的游戏,他仿照魔兽,建塔拦截敌人入侵,发挥你的智慧让敌人走最远的路,将他们消灭在路上.... 源码下载:http://code.66 ...

  10. PHP出错界面详细说明

    在web 上所有常见的错误之一就是无效的链接.一旦从其它站点上出现了无效的链接,你会重新安排你 的站点.人们会将他们喜欢的站点存成书签,如果在三个月后再次访问时,仅仅发现的是'404 Not Foun ...