• 整合Visual C++和WDK7:Step by step


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

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

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

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

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

    image

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

    Solution Name我们填上wdk_sample。

    image

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

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

    image

    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文件中的包含文件路径:

    image

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

    image

    5. 打开Configuration Manager:

    image

    6. 新建一个configuration:

    Name:xp_x86_free

    Copy settings from: Debug

    image

    单击确定。

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

    image

    image

    image

    8. 编辑项目属性:

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

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

    image

    展开Macro:

    image

    好,现在到关键时刻了:

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

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

    image

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

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

    删除之前是这样:

    image

    删除后:

    image

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

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

    image

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

    image

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

    image

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

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

    image

    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目录。点开看看:

    image

    啊哈,大功告成了。

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

    image

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

    18. 该方法目前的缺点:

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

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

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

  • 相关阅读:
    concurrent.futures
    HTTP协议
    Web框架原理
    Docker从入门到实战应用
    Mac Homebrew超坑爹的地方
    第6章-7.找出总分最高的学生 (15分)
    第6章-6.求指定层的元素个数 (40分)
    第6章-5.列表元素个数的加权和(1) (40分)
    第6章-4.列表数字元素加权和(1) (40分)
    第6章-3.列表或元组的数字元素求和 (20分)
  • 原文地址:https://www.cnblogs.com/byeyear/p/2721921.html
Copyright © 2020-2023  润新知