【问题标题】:Porting PLX 32-bit device driver to 64-bit driver将 PLX 32 位设备驱动程序移植到 64 位驱动程序
【发布时间】:2012-12-20 18:07:39
【问题描述】:

在我提出问题之前,这里有一些背景信息,以便您更好地了解我想要完成的任务。我四处搜索,发现了类似的问题,但没有一个是我要问的具体问题。

我正在尝试将修改后的 32 位 PLX Pci9056 设备驱动程序移植到 64 位。我还有一些使用该驱动程序的用户应用程序。 PLX 提供完整的 SDK,包括 dll 中的 PLX API、驱动程序源代码以及用于创建和调试用户应用程序的工具。它使用 Windows DDK 构建环境来构建驱动程序。以下是它们的交互方式:

用户应用程序 --> PLX API --> PLX Pci 9056 驱动程序 --> PLX 芯片

32 位驱动程序已在 32 位 Windows 7 上测试并正常工作。我相信我应该能够简单地在 64 位 Windows DDK 构建环境中重建驱动程序(当然在处理任何指针转换之后。如果我错了,请纠正我。)此时驱动程序应该在 64- 上正常运行位 Windows 7 机器。

我了解通常 32 位应用程序可以在 64 位计算机上正常运行,但在这种情况下,用户应用程序使用的是最初仅为支持 32 位而构建的 PLX API。我的用户应用程序在不更新的情况下是否仍可在 64 位操作系统中运行,还是会遇到问题?

【问题讨论】:

  • 我认为唯一可能的答案是“视情况而定”。一个明显的潜在问题是,如果用于在 DLL 和驱动程序之间进行通信的数据结构包含在两种环境中大小不同的元素,则需要更改驱动程序以适应这种情况。如果驱动程序做了一些不寻常的事情,比如映射到用户进程内存空间,那么可能会出现问题(我不确定),当然,任何仅在 32 位中测试过的驱动程序都可能做出不安全的假设。
  • 好的,这些是我最初认为可能出现的一般问题。我想我会构建并进行一些测试。
  • 32 位应用程序将加载 32 位 DLL 并使用 32 位设备驱动程序。将其视为 64 位 Windows 上完全独立的子系统
  • 你好,你运气好吗? @btse

标签: windows 64-bit driver device-driver 32-bit


【解决方案1】:

PLX PCI SDK(现为 Broadcom PCI/PCIe SDK)多年来一直支持具有相同源代码的 32b/64b 驱动程序。需要时使用特殊宏等。在 Windows 中,由于 WOW 层,您的 32 位应用程序将正常工作。 PLX IOCTL 结构始终将指针存储在 64 位字段中,以确保在构建 32 位应用程序时结构不会发生变化。 SDK 还提供 API 库的 64 位构建,因此您也可以将您的应用程序构建为原生 64 位。在大多数情况下,相同的应用程序级源代码应该可以在 Windows 和 Linux 中运行。 SDK 中提供的示例对于 Win/Linux 都是相同的源代码。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2011-09-03
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多