WinUsb_SetPowerPolicy 函数 (winusb.h)

WinUsb_SetPowerPolicy 函数设置设备的电源策略。

语法

BOOL WinUsb_SetPowerPolicy(
  [in] WINUSB_INTERFACE_HANDLE InterfaceHandle,
  [in] ULONG                   PolicyType,
  [in] ULONG                   ValueLength,
  [in] PVOID                   Value
);

参数

[in] InterfaceHandle

设备上第一个 (默认) 接口的不透明句柄, WinUsb_Initialize返回。

[in] PolicyType

一个 值,该值指定要设置的电源策略。 下表描述了 winusbio.h 中定义的符号常量。

策略参数 说明
AUTO_SUSPEND

(0x81)

指定自动挂起策略类型;power policy 参数必须由调用方在 Value 参数中指定。

对于自动挂起, Value 参数必须指向 UCHAR 变量。

如果 Value (非零) 为 TRUE ,则如果设备处于空闲状态,则 USB 堆栈会暂停设备。 如果没有挂起的传输,或者唯一挂起的传输是中断或批量终结点的 IN 传输,则设备处于空闲状态。

默认值由 DefaultIdleState 注册表设置中设置的值确定。 默认情况下,此值为 TRUE

SUSPEND_DELAY

(0x83)

指定 suspend-delay 策略类型;power policy 参数必须由调用方在 Value 参数中指定。

对于暂停延迟, 必须指向 ULONG 变量。

指定 WinUSB 驱动程序在传输后必须等待的最短时间(以毫秒为单位),然后才能暂停设备。

默认值由 DefaultIdleTimeout 注册表设置中设置的值确定。 默认情况下,此值为 5 秒。

[in] ValueLength

Value 处缓冲区的大小(以字节为单位)。

[in] Value

电源策略参数的新值。 Value 的数据类型和值取决于 PolicyType 中传递的电源策略的类型。 有关详细信息,请参阅 PolicyType

返回值

如果操作成功,WinUsb_SetPowerPolicy返回 TRUE。 否则,此函数返回 FALSE,调用方可以通过调用 GetLastError 检索记录的错误。

GetLastError 可以返回以下错误代码。

返回代码 说明
ERROR_INVALID_HANDLE
调用方在 InterfaceHandle 参数中传递 NULL
ERROR_INVALID_PARAMETER
调用方为 ValueLength 参数中的策略参数缓冲区传递了无效大小。
ERROR_NOT_ENOUGH_MEMORY
指示内存不足,无法执行操作。

注解

以下列表汇总了更改对电源管理状态的影响:

  • 所有管道句柄、接口句柄、锁和备用设置都会跨电源管理事件保留。
  • 当设备传输到低功耗状态时,正在进行的任何传输将暂停,并在设备还原到工作状态时恢复。
  • 设备和系统必须处于工作状态,客户端才能还原特定于设备的配置。 客户端可以通过WM_POWERBROADCAST消息确定设备和系统是否处于工作状态。
  • 客户端可以通过调用 WinUsb_SetPowerPolicy 来指示接口处于空闲状态。

要求

要求
目标平台 通用
标头 winusb.h (包括 Winusb.h)
Library Winusb.lib
DLL Winusb.dll

另请参阅

WinUSB

WinUSB 函数

WinUSB 电源管理

WinUsb_Initialize