【问题标题】:Developing a driver for several Windows versions (xp, win7, vista)为多个 Windows 版本(xp、win7、vista)开发驱动程序
【发布时间】:2012-07-15 01:56:21
【问题描述】:

我们正在开发一个 DLL,它从 WinDDK 调用通用 WinUsb 函数。此 DLL 需要在 32 位和 64 位版本的 Windows 中工作,包括 xp、vista、win7,可能还有 win8。

我的问题是,我们如何通过针对所有这些平台来管理 Visual Studio 2010 解决方案? WinDDK 库对于每个操作系统都是不同的,所以如果我从代码中引用一个库:

#### #pragma comment (lib , "C:\\WinDDK\\7600.16385.1\\lib\\wlh\\i386\\winmm.lib" )

或者通过引用project options->includes section 中的库,该项目仅适用于特定的目标架构。 (在这个例子中,Vista 32 位,因为我包括了 'wlh')。

我们是否应该为每个不同的操作系统目标创建不同的项目?

【问题讨论】:

  • 你会遇到很多麻烦,你不使用 ddk 创建 DLL,也不使用 VS。用 Walter Oney 的书自学。
  • @Hans:也许我的问题具有误导性。我正在使用 VS 创建一个调用通用 WinUsb 函数的 DLL。为了调用 WinUsb 函数,我从 DDK 中引用了相应的 winusb.lib 函数。
  • @SomethingBetter:汉斯是对的。您正在尝试调用用于驱动程序的函数,并且您正在尝试使用不适合驱动程序的开发平台来执行此操作。您可能会也可能不会逃脱,但无论哪种方式都会带来很多麻烦。

标签: visual-studio-2010 driver 32bit-64bit wdk


【解决方案1】:

WDK/DDK 版本不限制您构建的操作系统版本。您可以将目标操作系统作为构建环境/编译参数传递。

【讨论】:

    【解决方案2】:

    我认为你应该通过 DDK 构建 DLL 并在你的 VS 项目中使用它。

    您可以为您的 VS 项目编写预构建事件以运行批处理文件,该文件将构建 DLL 并将其放在项目的某个知名位置。

    此外,您可能必须为要构建的每个平台创建不同的项目配置(至少对于 32 位和 64 位不同)并为 DLL 运行适当的构建命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2010-09-26
      • 2012-06-12
      • 2010-12-09
      • 2015-10-23
      相关资源
      最近更新 更多