[首发于cnblogs,转载请注明:作者:byeyear/告别年代    Email: east3@163.com]

用惯了IDE,赶脚WDK7的build过程真心操蛋啊~~~

下面就来看看如何整合Visual C++和WDK7吧。原创作品。

以Visual C++ 2008 Express和WDK7600为例。

1. 启动Visual C++ 2008,新建一个Makefile project

Project name我们填上toaster,我们后面将把WDK的toaster例子文件加进来

Solution Name我们填上wdk_sample。

2. 在后续的对话框中,全部内容使用默认值。

3. 将wdk中的toaster例子文件复制到工程目录(wdk_sample\toaster),并添加到project中:

makefile,makefile.inc,sources和toaster.c:在WinDDK\7600.16385.1\src\general\toaster\kmdf\func\simple

toaster.h:在WinDDK\7600.16385.1\src\general\toaster\kmdf\func\shared

driver.h和public.h:在WinDDK\7600.16385.1\src\general\toaster\kmdf\inc

4. 修改一下toaster.h文件中的包含文件路径:

将driver.h和public.h两行修改为:

5. 打开Configuration Manager:

6. 新建一个configuration:

Name:xp_x86_free

Copy settings from: Debug

单击确定。

7. 在Active solution configuration下拉列表中选择Edit,将Debug和Release配置删除:

8. 编辑项目属性:

项目属性对话框中,左侧选择NMake:

右侧单击Build Commd Line编辑框右侧的小方块,弹出编辑框:

展开Macro:

好,现在到关键时刻了:

9. “开始”菜单 –> Windows Driver Kit –> WDK 7600 –> Build Enviroment –> Windows XP –> x86 free build:

在这个菜单项上单击右键,选择“属性”,选择“快捷方式”选项卡:

选中“目标”编辑框中的内容,按Ctrl+C或单击右键选“复制”,将该编辑框内的内容复制到剪贴板。

10. 回到步骤8中Build Command Line编辑框,输入“call ”(call后有个空格),然后按Ctrl+V将剪贴板中的内容复制进来,并删除从C:\WINDOWS开始到cmd.exe /k之间的内容:

删除之前是这样:

删除后:

11. 按回车换行,输入:“cd /D ”(D后面有个空格)

12. 在macro展开列表中选择InputDir,单击Insert按钮:

13. 现在Command Line编辑框应该像这样:

14. 继续在上述编辑框中起一新行,输入:build

15. 单击OK,回到项目属性对话框。继续编辑Rebuild All Command Line:

除了最后一行输入build /c外,其余和上一步中的command line一致,你可以直接复制过来修改:

16. 现在可以回到VS主界面,Build一下试试:

1>  
1>   .\toaster.c
1>toaster.c
1>Linking Executable - objfre_wxp_x86\i386\wdfsimple.sys
1>Microsoft (R) Incremental Linker Version 9.00.30729.207
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>/MERGE:_PAGE=PAGE
1>/MERGE:_TEXT=.text
1>/SECTION:INIT,d
1>/OPT:REF
1>/OPT:ICF
1>/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221
1>/INCREMENTAL:NO
1>/release
1>/NODEFAULTLIB
1>/WX
1>/debug
1>/debugtype:cv,fixup,pdata
1>/version:6.1
1>/osversion:6.1
1>/functionpadmin:5
1>/safeseh
1>/pdbcompress
1>/STACK:0x40000,0x1000
1>/driver
1>/base:0x10000
1>/align:0x80 /stub:d:\winddk\7600.16385.1\lib\wxp\stub512.com
1>/subsystem:native,5.01
1>/entry:FxDriverEntry@8
1>/out:e:\works\wdk\wdk_sample\toaster\objfre_wxp_x86\i386\wdfsimple.sys
1>e:\works\wdk\wdk_sample\toaster\objfre_wxp_x86\i386\toaster.obj
1>d:\winddk\7600.16385.1\lib\wxp\i386\BufferOverflowK.lib
1>d:\winddk\7600.16385.1\lib\wxp\i386\ntoskrnl.lib
1>d:\winddk\7600.16385.1\lib\wxp\i386\hal.lib
1>d:\winddk\7600.16385.1\lib\wxp\i386\wmilib.lib
1>D:\WinDDK\7600.16385.1\lib\wdf\kmdf\i386\1.9\WdfLdr.lib
1>D:\WinDDK\7600.16385.1\lib\wdf\kmdf\i386\1.9\WdfDriverEntry.lib
1>d:\winddk\7600.16385.1\lib\wxp\i386\sehupd.lib
1>BUILD: Finish time: Fri Oct 12 20:52:51 2012
1>BUILD: Done
1>    1 file compiled - 3 Warnings
1>    1 executable built
1>Build log was saved at "file://e:\works\wdk\wdk_sample\toaster\xp_x86_free\BuildLog.htm"
1>toaster - 0 error(s), 0 warning(s)

看一下工程目录内,多了个objfre_wxp_x86目录。点开看看:

啊哈,大功告成了。

17. 你可以用同样的方法把其他Build Enviroment都加到Configuration Manager里去。比如我又加了一个xp_x86_checked。

可以用同样的方法加入WDK所支持的所有Build Enviroment。

18. 该方法目前的缺点:

加入新文件时,需要:1. 编辑sources文件 2. 将文件加入Solution Explorer;

只能在工程文件内部Go Declaration,没有办法Go Declaration到DDK/WDF的结构或函数

19. 若您有更好的方法,或认为有改进余地,欢迎留言或Email我。

整合Visual C++和WDK7:Step by step相关推荐

  1. Step by Step Setup Git Server on Windows with CopSSH + msysGit and Integrate Git with Visual Studio

    Introduction First of all, let me clarify that Git doesn't need to specify the side for client and s ...

  2. Microsoft Visual C# 2008 Step by Step

    Microsoft Visual C# 2008 Step by Step 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/01/22/165 ...

  3. 书讯--Microsoft Windows Communication Foundation Step by Step

    SOA 观念提出后,经过多年的时间终于开始发酵.微软世界里因 WCF 的出现,简化了实做的基础.SOA 强调如下的重点: l   一切技术遵循公开标准 l   服务定义的边界明确 l   服务自主而不 ...

  4. Asp.Net Core 5 REST API - Step by Step(一)

    翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...

  5. C++开发WPF,Step by Step

    C++开发WPF,Step by Step 示例代码 使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page.下面我就做个详细的介绍. 一.创建工程, 由于MFC的 ...

  6. RDL(C) Report Design Step by Step 3: Mail Label

    RDL(C) Report Design Step by Step 3: Mail Label Crystal Report在报表向导中提供了三种向导类型给用户进行选择--Standard.Cross ...

  7. RDL(C) Report Design Step by Step 2: SubReport

    RDL(C) Report Design Step by Step 2: SubReport 前两天,有网友在Blog上评论要求将子报表的配置贴出来,由于这两天有些别的事情,所以耽搁了:另外,自己也比 ...

  8. RDL(C) Report Design Step by Step 1: DrillThrough Report

    RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...

  9. Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成

    注意:该系列文章从教师王健写了一部分ssh集成开发指南 引言: 之前没有引入拦截器之前,我们使用Filter过滤器验证用户是否登录,在使用struts2之后,全然能够使用拦截器,验证用户是否已经登录, ...

最新文章

  1. linux发布tomcat项目项目流程,linux下tomcat的配置及项目的部署流程
  2. ORA-3136 - ORA-4030
  3. 使用webpack 打包出错[webpack-cli] TypeError: Cannot read property ‘tap‘ of undefined
  4. ad采样信噪比与噪声_软件ad和硬件滤波 ad采样硬件滤波电路
  5. 配置zigbee模块
  6. 如何查看路由器中的宽带密码
  7. Yapi接口平台个人总结
  8. 批量抠图,只需要这几行python代码!
  9. 用matlab求一组数据的分布函数,求任意一组数据的概率密度函数
  10. SuperMap iClient for MapboxGL 实现WFS查询功能
  11. 高新技术企业认证自助申请教程
  12. 北航计算机考研机考,11北航计算机复试上机
  13. IT 基础设施趋势合集 | 多云、超融合、SDS、容器之趋势解读与政策分析
  14. 编程之美--3.5最短摘要的生成
  15. php扩展geoIP的使用
  16. 【开源电机驱动】H 桥驱动-软件篇
  17. JavaScript 练手小案例:超级简单又炫酷的图片手风琴效果
  18. 一种防山火在线监测装置
  19. SAP ABAP 解析JSON
  20. strlen()函数计算方法

热门文章

  1. EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的四分屏的前端展示方案
  2. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ
  3. MATLAB中fplot函数,画出的figure中曲线存在空白的问题与解决方法。
  4. php统计字数函数,微博内容字数统计函数(PHP版)
  5. 车牌识别github资源
  6. 【实用代码】选项卡切换——带标题底纹样式
  7. Linux系统调用列表
  8. GUCCI、LV等奢侈品巨头如何布局元宇宙的,其他品牌应该跟上吗?
  9. 小学计算机学情分析报告,美图小学信息技术_秀秀美图更漂亮教学设计学情分析教材分析课后反思...
  10. 老友记第一季台词打印_老友记台词第一季 老友记第一季台词