编写 UMDF 驱动程序的优点

本主题介绍编写User-Mode驱动程序框架 (UMDF) 驱动程序而不是内核模式驱动程序的优点。

编写 UMDF 驱动程序时,可受益于以下各项:

  • UMDF 驱动程序有助于提高操作系统稳定性,因为它们只能访问运行它们的进程的地址空间。

  • 由于 UMDF 驱动程序在 LocalService 帐户下运行,因此它们对用户数据或系统文件的访问权限有限。

  • 用户模式驱动程序在比内核模式驱动程序简单得多的环境中运行。 例如,内核模式驱动程序必须考虑 IRQL、页面错误和线程上下文。 但是,在用户模式下,这些问题不存在。 用户模式驱动程序始终在与请求进程不同的线程中运行,并且始终可能会发生页面错误。

  • UMDF 版本 2 在大多数区域中提供与 KMDF 的功能奇偶一性。 有关完整比较,请参阅 将 UMDF 2 功能与 KMDF 进行比较

  • UMDF 版本 2 有助于在 KMDF 和 UMDF 之间进行转换。 请参阅 如何将 KMDF 驱动程序转换为 UMDF 2 驱动程序 (,反之亦然)

  • 可以使用用户模式调试器或从 UMDF 版本 2 开始的内核模式调试器来调试 UMDF 驱动程序。

  • 可以将 Wdfkd.dll 调试器扩展命令与 KMDF 一起使用,并从 UMDF 版本 2 开始。 有关详细信息,请参阅 调试器扩展

整个 WDF 模型的基本目标是提供智能默认值,以便你可以专注于设备硬件,并避免编写代码来执行大多数驱动程序通用的任务。

为了实现此目标,框架设计为在“选择加入”的基础上与驱动程序配合使用。 编写 UMDF 驱动程序时,仅为影响设备的事件提供回调例程。 例如,某些设备在打开后和关闭设备之前需要立即干预。 此类设备的驱动程序可以实现框架在这些时间调用的回调函数。

驱动程序包含的代码仅处理其设备需要特定于设备的支持的事件。 所有其他事件都可以由框架默认值处理。

此外,驱动程序可以配置其 I/O 请求队列,以便框架在设备处于低功耗状态时停止调度请求,并在设备返回到运行状态后继续调度。 同样,如果 I/O 请求在设备处于低功耗状态时到达,框架可以自动打开设备。