65.9K
CodeProject 正在变化。 阅读更多。
Home

如何为编译驱动程序配置 Visual Studio 2008

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.42/5 (22投票s)

2008 年 12 月 18 日

CPOL

2分钟阅读

viewsIcon

116446

如何在不使用DDK控制台工具的情况下配置Visual Studio 2008来编译驱动程序。

介绍 

众所周知,微软官方不支持DDK与Visual Studio(任何版本)的集成。因此,我们可以使用Visual Studio编辑器(或任何其他文本编辑器)来开发驱动程序的源代码,但编译需要使用DDK构建工具。当然,这很不方便,因为我们必须始终在编辑器和控制台窗口之间切换,但最糟糕的是,开发人员必须花费大量时间在编辑器中查找错误行。

背景 

有几种方法可以使用Visual Studio编译驱动程序。你可以在Mark Roddy的优秀文章Windows Driver Build Methods and Tools中找到大部分方法。

Mark提供了一些第三方工具。这很好,但我将展示一种更便捷的方法(依我拙见):如何配置和使用Visual Studio编译驱动程序。

玩得开心

  1. 设置Visual Studio 2008。

  2. 设置DDK (WDK)。

  3. 将DDK包含文件、库和bin添加到VS路径。

  4. 创建一个新的空“Win32项目”并添加源文件(例如,HelloWorld.c)。

  5. 配置项目属性(所有配置)

    1. C/C++ - 常规 - 调试信息格式 = 程序数据库 (/Zi)
    2. C/C++ - 预处理器 - 预处理器定义 = _X86_ [调试配置中也添加DBG]
    3. C/C++ - 代码生成 - 启用C++异常 = 否
    4. C/C++ - 代码生成 - 基本运行时检查 = 默认值
    5. C/C++ - 代码生成 - 缓冲区安全检查 = 否 (/GS-)
    6. C/C++ - 高级 - 调用约定 = __stdcall (/Gz)
    7. C/C++ - 高级 - 编译为 = 编译为C代码 (/TC) [如果你打算使用纯C]
    8. 链接器 - 常规 - 输出文件 = $(OutDir)\$(ProjectName).sys
    9. 链接器 - 常规 - 启用增量链接 = 默认值
    10. 链接器 - 输入 - 附加依赖项 = ntoskrnl.lib hal.lib $(NOINHERIT) [在此处添加所需的库,例如 ntoskrnl.lib hal.lib]
    11. 链接器 - 输入 - 忽略所有默认库 = 是 (/NODEFAULTLIB)
    12. 链接器 - 清单文件 - 生成清单 = 否
    13. 链接器 - 系统 - 子系统 = 本机 (/SUBSYSTEM:NATIVE)
    14. 链接器 - 系统 - 驱动程序 = 驱动程序 (/DRIVER)
    15. 链接器 - 高级 - 入口点 = DriverEntry
    16. 链接器 - 高级 - 基址 = 0x10000
    17. 链接器 - 高级 - 随机基址 = 禁用 (/DYNAMICBASE:NO)
    18. 链接器 - 高级 - 数据执行保护 (DEP) = 禁用 (/NXCOMPAT:NO)
  6. 好了。完成了。现在你可以使用简单的代码进行测试,例如:

    #include "ntddk.h"
    
    NTSTATUS
    DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING
    RegistryPath)
    {
    return STATUS_UNSUCCESSFUL;
    }

兴趣点 

Visual Studio + DDK - 太棒了!:)

历史 

  • 2008年12月18日:首次发布
© . All rights reserved.