【问题标题】:64/32 bit standard driver translation in WindowsWindows 中的 64/32 位标准驱动程序翻译
【发布时间】:2009-03-25 12:00:22
【问题描述】:

这个问题基本上是对该线程的跟进: Using a 64 bit driver in a 32 bit program. Windows

当我有一个用于一组 64 位 DLL 的 64 位驱动程序时,我了解到我不能让 32 位进程调用 DLL。我们现在使用一些有趣的 interpocess 通信来解决这个问题。

不清楚的是,在使用“标准设备”(如显卡)时,自动 6432 位转换是如何发生的。 Windows 64 位操作系统下的任何 32 位应用程序都应该能够使用打印机驱动程序或通过使用某些 Windows DLL 使用 GDI 绘制一些东西。微软必须将显卡或打印机的硬件驱动程序从 32 位转换为 64 位。我知道 WoW64 可以访问注册表和文件系统,但它是否也可以转换为标准驱动程序?

具体的问题是,如果我们有一个 64 位 WDM 硬件驱动程序,它是否可以被 32 位应用程序轻松使用,Windows 进行 6432 位转换?

【问题讨论】:

    标签: 64-bit 32-bit wow64


    【解决方案1】:

    “标准设备”被认为是“标准”,因为 Windows 自己对它们负责。对于 64 位 Windows,这意味着同时存在 64 位和 32 位 DLL。 32 位 DLL 是特殊的,可以与 64 位内核(包括该内核中的驱动程序)通信。一般来说,32 位 DLL 不会与 64 位 DLL 对话,因为没有 64 位进程可以加载后者的 DLL。

    【讨论】:

    • 如果 WDM 驱动程序同时具有 64 位和 32 位接口 (DLL),它可以工作吗?
    • 根据定义,WDM 驱动程序不是 DLL。此外,WDM 驱动程序在内核模式下运行,而 DLL 在用户模式进程中运行。 WDM 驱动程序可能有伴随的 DLL,但对于标准设备来说,这是不应该的。
    • 好的,我使用 64 位 WDM 驱动程序和 32 位应用程序测试了整个事情,它立即工作。
    猜你喜欢
    • 2011-03-11
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2010-10-10
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多