本主题介绍编写 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 请求到达,框架可以自动打开设备。