常见问题:驱动程序开发人员关于 Windows Driver Foundation 的问题

Published: July 13, 2005 | Updated: May 10, 2006

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 中支持的设备类和驱动程序模型:

设备类/驱动程序模型KMDF 1UMDFSDVPREfAST

防病毒筛选器

X

X

数码相机、便携媒体播放器、
手机、PDA 和其他连接到协议总线(如 USB 或 IEEE 1394)的设备

X

X

显示适配器

X

DSL/电缆调制解调器

X

X

以太网设备

X

调制解调器、CD-ROM 设备、键盘
和鼠标设备

X

X

X

打印机

X

扫描仪

X

SCSI / StorPort

X

视频捕获设备(网络摄像机)

X

1如果微型端口允许微型端口驱动程序使用该驱动程序未提供的函数,那么 KMDF 就能够提供对现有端口驱动程序模型的有限支持。
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 对象和接口的基础有以下几个方面的原因:

许多用户模式编程人员已经熟悉 COM。

C++ 是编写用户模式驱动程序和 COM 应用程序的首选语言。

大量工具(包括 Microsoft Visual Studio 和 Active Template Library (ATL))都支持基于 COM 的应用程序和对象,这有助于驱动程序编写人员快速生成代码。

COM 接口允许对函数进行逻辑分组,所以很容易理解和导航 DDI。

如果使用 COM,DDI 的演化无需重新编译现有的驱动程序 DLL。

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.comThis link leaves the Microsoft.com site

Q.从哪里可以获得更多信息?
A.

您可以在以下位置找到关于 WDF 的更多信息:

WHDC 网站上的 Windows Driver Foundation

http://www.microsoft.com/whdc/driver/wdf/default.mspx

当前的白皮书

Windows Driver Foundation 的体系结构

WDF 用户模式驱动程序框架简介

Windows Driver Foundation 简介

Windows Driver Foundation 中的即插即用和电源管理简介

Windows 驱动程序中的 DMA 支持

还有另一个框架?为什么新的 Windows Driver Foundation 值得重新审视

如果您的问题在 FAQ、白皮书、WHDC 网站上的 WDF 页面或当前 WDF 测试版提供的 WDF 文档中都没有解答,请将电子邮件发送到以下 WDF 反馈地址:

关于 KMDF 的问题:kmdffdbk@microsoft.com

关于 UMDF 的问题:umdffdbk@microsoft.com

关于 SDV 的问题:sdvfdbk@microsoft.com

Q.
A.
Top of pageTop of page