【问题标题】:how can i build a driver using visual studio? [closed]如何使用 Visual Studio 构建驱动程序? [关闭]
【发布时间】:2010-11-05 11:00:57
【问题描述】:

谁有文章如何做到这一点?

【问题讨论】:

  • @Bill the Lizard:这怎么跑题了?这不是寻找工具或库,这是驱动程序编写者在 MS 将驱动程序构建重新集成到 VS 和 VisualDDK 出现之前十多年来一直面临的一个非常现实的问题。实在无法理解结尾所指出的基本原理。我的意思是,即使是“垃圾邮件”在这里也是一个更合乎逻辑的选择。
  • @0xC0000022L 阅读问题。 “有没有人有文章如何做到这一点?”正在请求场外资源。
  • @BilltheLizard:我阅读了问题标题。问题本身仅引用标题。

标签: visual-studio driver wdk


【解决方案1】:

由于您没有提供 Visual Studio 的确切版本,所以让我给您我知道的选项。

Visual Studio 2012、2013 和 2015

各自的当代 DDK/WDK 版本: WDK 8、8.1 和 10(在撰写本文时)。

借助适用于 Windows 8 的 WDK,Microsoft 的 WDK 团队终于再次直接从 Microsoft 提供与 Visual Studio 的完全集成。

然而,虽然 Visual Studio 2017 已经存在于次要版本 15.4 中,但 WDK 仍然需要 Visual Studio 2015。

Visual Studio 2002 到 2010

各自的当代 DDK/WDK 版本: 适用于 Windows XP/2003 Server 的 DDK、适用于 Windows Vista 和 Windows 7 的 WDK 及其各自的服务包级别和各自的服务器版本。

微软正式支持这些版本构建驱动程序。编译驱动程序的唯一更糟糕的选择是完整的第三方工具链(除了英特尔的 C 编译器,它被 MS、IIRC 认可)。

在那个时期使用 Visual Studio 编译器被认为是非常糟糕的形式,微软明确建议不要这样做。但是,内核模式下的 C++ 也曾一度受到反对,现在 MS 为内核模式提供了 C++ 框架。他们正在改变的时代...... ;)

无论如何,解决方法以 ddkbuild.batddkbuild.cmd 的形式存在,它们使用 DDK 工具链,但有效地允许您将来自“make”项目的结果调用集成到 Visual Studio 中。 DDKWizard 是这两个脚本的项目创建向导。 DDKWizard支持 Visual Studio 2010!两个脚本的链接提供了很好的文档,DDKWizard 也提供了不错的文档。

据我所知,ddkbuild.cmd 最初基于 ddkbuild.bat,而 HollisTech 版本也可以追溯到 OSR 的那个版本。

VisualDDKVirtualKD 结合出现的时间比前面提到的要晚,但被认为是一个更优越、更复杂的解决方案。但是您的里程可能会有所不同。无论哪种情况,在后一种解决方案中,与 Visual Studio 的集成都更加完整。

Visual Studio 6

各个当代 DDK/WDK 版本: 适用于 Windows NT 4 和 Windows 2000 的 DDK。

在 Windows XP DDK(现在 DDK 称为 WDK)之前,编译器不包含在 DDK 中,因此您必须安装编译器工具链。 NT 4.0 和 Windows 2000 就是这种情况。

【讨论】:

    【解决方案2】:

    下载并安装VisualDDK,您将能够直接从 Visual Studio 创建驱动程序项目和调试驱动程序。

    【讨论】:

      【解决方案3】:

      来自 OSR-Online 的 ddkbuild 是一个不错的替代方案 ddkbuild download link

      【讨论】:

        【解决方案4】:

        为了构建我的驱动程序,我在 Visual Studio 2008 中使用了 VisualDDK。一开始我使用我的计算机和 virtualBox 机器开始调试,但是当我在 Visual Studio 中启动调试过程时,我的虚拟机没有显示外部 IP 地址(通常应该在 DDKLauncherMonitor 中显示 192.168.1.102 和 10.0.1.15 但它只显示 10.0.1.15 )。

        我停止使用虚拟机,我决定使用真机。在第二台计算机上,我启动了 DDKLauncherMonitor。我从我的第一台电脑开始调试。我在第二台机器上收到了 Udp 包以及 driver.sys。但是,当我尝试从 Visual Studio(第一台计算机)加载驱动程序时,没有任何效果。另外,在第二台机器上告诉我“Windows 需要数字签名的驱动程序”。

        有同样的人遇到这种问题,他/她可以提供帮助。

        【讨论】:

          【解决方案5】:

          创建一个 makefile 项目并将以下内容用作构建命令:

          pushd .  
          call C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x86 WXP no_oacr   
          popd  
          build -cgwiz  
          

          (显然调整 setenv 的参数以适应)

          【讨论】:

          • 在我看来就像货物崇拜编程。您应该已经解释了参数以及可用的参数。
          • 让我傻笑; “setenv /?”会告诉你参数。具体情况将取决于您要做什么,而问题中没有说明......这也许是一个货物崇拜问题......
          • WDK 的基本路径、构建配置、目标操作系统和标志因此“过于具体”,我认为?
          • 我应该解释一下我的傻笑;这些东西有据可查——stackoverflow 是货物崇拜编程的去处;对于其他所有内容,都有 WDK 文档。走吧——还有更多有趣的问题! 0xc00000bc :-)
          • 大声笑,确认。 0x00000080L
          【解决方案6】:

          如果你想使用 DDK build 和 WDK 使用 ddkbuild.bat,那应该是很好的(我认为它大部分仍然有效)应该让你去。或者从 OSR 中查看 ddkbuild.cmd

          【讨论】:

            【解决方案7】:

            在 VS 中创建一个 makefile 项目。添加您的来源、标题、makefile 和 sourcefile。打开项目属性->配置属性->NMake->构建命令行,写:

            call $(WINDDK)\bin\setenv.bat $(WINDDK) fre wnet
            cd /d $(ProjectDir)
            build.exe -I
            

            现在您可以从 VS 构建。 makefile 项目的优势:它为您提供所需的配置(w2k、wxp、wnet、wlh 等),并且您可以从 DDK 命令行构建。

            附: fre wnet - 是一个示例配置,使用项目所需的配置。最好同时拥有frechk 配置。 WINDDK - 带有 DDK 根路径的环境变量。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-11-22
              • 1970-01-01
              相关资源
              最近更新 更多