在 USB 驱动程序中的选择性暂停 (WDF)

USB 函数驱动程序通过实现 USB 选择性暂停支持运行时空闲检测。以下是可供驱动程序开发人员使用的内容,有关于如何在基于 Windows® 驱动程序基础 (WDF) 的 USB 驱动程序中实现选择性暂停。

关于选择性暂停

选择性暂停是指能够关闭并在以后恢复空闲 USB 设备,同时所连接到的计算机保持为工作状态 (S0) 的能力。出于能源节省操作的需要(尤其在移动电脑上),所有 USB 设备和驱动程序都应支持选择性暂停。在设备空闲时关闭设备,但系统仍保持为 S0 状态,这样可提供以下重要优势:

  • 选择性暂停节约能源。
  • 选择性暂停可帮助减少环境因素,比如热负荷和噪音。

如果你的设备硬件可以在空闲时关闭,则驱动程序应支持此功能。基于 Windows® 驱动程序基础 (WDF) 的 USB 驱动程序中的选择性暂停支持在基本的即插即用支持需要的回调之外,还需要最多几个额外的回调。

USB 设备的每个函数驱动程序都应实现积极的电源管理,即暂停空闲设备,同时保持系统运行。本主题描述如何在基于 WDF 的驱动程序中实现选择性暂停。如果你对 WDF 不熟悉,请参阅 Windows 驱动程序工具包 (WDK) 和“使用 Windows Driver Foundation 开发驱动程序”。

USB 设备通过 USB 选择性暂停支持运行时空闲检测。选择性暂停允许空闲设备进入暂停状态,而不影响连接到相同集线器的其他设备,或者在使用多功能设备的情况下,不影响设备中的其他功能。当所有设备或功能已暂停时,整个集线器或多功能设备可以关闭。

从硬件角度看,选择性暂停是 USB 端口上的物理状态。当连接到该端口的所有功能都空闲时,该端口可以进入选择性暂停。

为了符合 USB 规范,所有 USB 设备都必须支持选择性暂停。当 USB 总线空闲时,设备必须能够关闭。Microsoft 提供的 USB 集线器驱动程序在硬件级别实现选择性暂停。

USB 函数驱动程序应通过 WDF 为其单个设备功能实现选择性暂停,WDF 与总线驱动程序通信并管理暂停并恢复设备功能的设备 I/O 控制请求。WDF 支持内核模式和用户模式的驱动程序,以支持选择性暂停。

函数驱动程序的 USB 选择性暂停代码的详细信息取决于驱动程序是在用户模式下还是在内核模式下运行。请考虑以下指导信息:

  • 只要有可能,就使用用户模式的驱动程序框架 (UMDF) 来实现 USB 驱动程序。用户模式驱动程序不容易损坏系统数据,而且比内核模式驱动程序更易于调试。
  • 仅在驱动程序通过常时等量终结点流传输数据时,或需要仅可用在内核模式中的其他功能或资源时,才使用内核模式驱动程序框架 (KMDF)。

电源策略所有权、I/O 队列和选择性暂停

设备堆栈的电源策略所有者 (PPO) 是确定设备在给定时间应处于哪种电源状态的驱动程序。在每个设备堆栈中仅有一个驱动程序可以是 PPO。函数驱动程序通常是其设备的 PPO。

如果你的 USB 驱动程序支持选择性暂停,并且在设备堆栈中在 PPO 层之上,则设备不得使用支持电源管理的队列。对于 UMDF 和 KMDF 驱动程序都是如此。如果请求到达电源管理队列,同时设备被暂停,则整个设备堆栈都会停止。

图 1 显示了 I/O 请求通过其 I/O 队列流向 USB 驱动程序。

请求 WDF USB 驱动程序的流

在该图中,请求到达 USB 驱动程序。该框架将请求添加到适当的队列。

如果队列不支持电源管理,则该框架根据驱动程序为队列配置的分派类型(按顺序、并行或手动)将请求显示给驱动程序。然后驱动程序处理该请求。

如果队列支持电源管理,而且设备未暂停,则框架根据配置的分派类型将该请求显示给驱动程序。

然而,如果设备暂停,则框架的操作取决于驱动程序是否是设备堆栈的 PPO。如果驱动程序是 PPO,则框架与 USB 父驱动程序通信以打开设备。在设备恢复后,框架将请求显示给驱动程序。

如果驱动程序不是 PPO,则框架不采取进一步操作,因为只有 PPO 可以恢复设备。请求保留在队列中。如果 PPO 不接收任何可导致它恢复设备的请求,则设备堆栈停止。

本部分内容

主题描述

在 UMDF 驱动程序中选择性暂停

本主题描述 UMDF 函数驱动程序如何支持 USB 选择性暂停。

在 USB KMDF 函数驱动程序中的选择性暂停

本主题描述 KMDF 函数驱动程序如何支持 USB 选择性暂停。

 

相关主题

Windows 驱动程序框架 (WDF)
即插即用 - 体系结构和驱动程序支持
KMDF 驱动程序中的 PnP 和电源管理
当 WDF 驱动程序可以使用支持电源管理的 I/O 队列时
使用 WDF 编写 USB 驱动程序
实现 USB 客户端驱动程序中的电源管理

 

 

显示:
© 2015 Microsoft