Windows Driver Foundation (WDF) 是用于编写 Microsoft Windows 驱动程序的全新的 Microsoft 平台。WDF 定义了一个以下两种框架都支持的驱动程序模型:用户模式驱动程序框架 (UMDF) 和内核模式驱动程序框架 (KMDF)。WDF 还包含驱动程序验证和测试工具, 包括静态驱动程序验证工具 (Static Driver Verifier,SDV) 和 PREfast。
本文提供了 Windows 驱动程序开发人员关于 WDF 的常见问题。
| Q. | WDF 支持哪些操作系统? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 内核模式 WDF 驱动程序可以在 Windows 2000 和更高的操作系统版本上运行。用户模式 WDF 驱动程序可以在 Windows Vista 和 Microsoft Windows XP 上运行。 WDF 不支持 Windows 98、Windows SE 或 Windows ME。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | WDF 支持哪些设备类和驱动程序模型? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 下表汇总了在 Windows Vista 发展过程中,计划在 WDF 中支持的设备类和驱动程序模型:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | WDF 是否支持其他设备类型和驱动程序模型? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 是的。置入了基本的 WDF 基础结构之后,KMDF 和 UMDF 都计划支持其他设备类型和驱动程序模型。我们需要您的反馈:您最希望支持哪些设备/驱动程序模型? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 我可以获得 KMDF 和 UMDF 的源代码吗? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | Microsoft 正在努力尝试将 KMDF 和 UMDF 的源代码以调试和文档工具的形式公开。如果源代码访问对您采用 WDF 至关重要,请参加 WDF 测试版计划并向 Microsoft 发送有关这方面的反馈。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | KMDF 和 UMDF 是否支持通用 DDI? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 我们正在考虑支持通用 DDI。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | KMDF 是否支持用 C++ 编写驱动程序? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | KMDF 支持用 C 开发内核模式驱动程序,但目前还不支持 C++。我们不保证当前可用的 C++ 编译器的输出结果能够在所有 Windows 平台和版本的内核模式中运行。Microsoft 正在积极研究能够在内核模式中更多地使用 C++ 的方法。 关于在内核模式中使用 C++ 的更多信息,请参阅使用 C++ 编写内核模式驱动程序:优点与缺点。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | KMDF 是否支持现有的微型端口模型,例如 NDIS、SCSIPORT 和 VIDEOPRT? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 是的,在有限的条件下。 如果微型端口允许微型端口驱动程序使用该驱动程序未提供的函数,那么 KMDF 就能够支持现有的端口驱动程序模型。这意味着您可以使用 KMDF 编写 NDIS-WDM 驱动程序,但是您不能使用 KMDF 编写 SCSIPORT 或 VIDEOPRT 微型端口驱动程序。在此情形下使用 KMDF 时,您只能使用 WDFIOTARGETs 和 DMA 支持,因为该端口驱动程序会处理所有的 I/O、即插即用和电源管理操作。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 为什么 UMDF 基于 COM? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | Microsoft 选择 COM 作为 UMDF 对象和接口的基础有以下几个方面的原因:
UMDF 仅使用 COM 的查询接口和引用计数功能;它不依赖于整个 COM 基础结构和运行时库。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 户模式驱动程序有哪些局限性? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 用户模式驱动程序无法直接访问硬件。例如,它不能执行 DMA 或处理中断。此外,它不能拥有内核模式客户端,因为操作系统不允许从内核模式到用户模式的调用。例如,输入、显示驱动程序和大多数网络存储设备驱动程序无法迁移到用户模式,因为他们拥有内核模式客户端。 基于同样的原因,用户模式驱动程序必须位于设备堆栈顶端;不能位于堆栈的中部。但是,一个堆栈可以包含多个用户模式驱动程序,即,用户模式驱动程序可以拥有用户模式子驱动程序。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 如何参加 WDF 测试版计划? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 参见 Windows Driver Foundation 测试版计划邀请,位于 http://www.microsoft.com/whdc/driver/wdf/beta.mspx | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 从哪里可以获得 USB FX2 测试板? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | USB FX2 测试板是由 Open Systems Reources (OSR) 生产的。关于订购测试板的信息,请参见 OSR 网站http://www.osr.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Q. | 从哪里可以获得更多信息? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A. | 您可以在以下位置找到关于 WDF 的更多信息: WHDC 网站上的 Windows Driver Foundation http://www.microsoft.com/whdc/driver/wdf/default.mspx 当前的白皮书 Windows Driver Foundation 的体系结构 Windows Driver Foundation 中的即插即用和电源管理简介 还有另一个框架?为什么新的 Windows Driver Foundation 值得重新审视 如果您的问题在 FAQ、白皮书、WHDC 网站上的 WDF 页面或当前 WDF 测试版提供的 WDF 文档中都没有解答,请将电子邮件发送到以下 WDF 反馈地址:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||