WdfDeviceWdmAssignPowerFrameworkSettings 函数 (wdfdevice.h)

[适用于 KMDF 和 UMDF]

WdfDeviceWdmAssignPowerFrameworkSettings 方法 (PoFx) 单组件设备的设置注册电源管理框架。

语法

NTSTATUS WdfDeviceWdmAssignPowerFrameworkSettings(
  [in] WDFDEVICE                     Device,
  [in] PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
);

参数

[in] Device

要为其指定 PoFx 设置的框架设备对象的句柄。

[in] PowerFrameworkSettings

指向描述客户端驱动程序的 PoFx 设置 的WDF_POWER_FRAMEWORK_SETTINGS 结构的指针。

返回值

WdfDeviceWdmAssignPowerFrameworkSettings 方法返回一个 NTSTATUS 值,该值指示操作成功或失败。

返回代码 说明
STATUS_INFO_LENGTH_MISMATCH
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS结构的大小不正确。
STATUS_INVALID_DEVICE_REQUEST
调用驱动程序不是设备的电源策略所有者。
STATUS_INVALID_PARAMETER
检测到 无效的“设置” 值。
 

此方法还可能返回其他 NTSTATUS 值

注解

WdfDeviceWdmAssignPowerFrameworkSettings 方法仅适用于单组件设备。

在调用此方法之前,客户端驱动程序必须先成功调用 WdfDeviceAssignS0IdleSettings,并将 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 结构的 IdleTimeoutType 字段设置为 SystemManagedIdleTimeoutSystemManagedIdleTimeoutWithHint

驱动程序必须在设备首次启动之前或期间调用 WdfDeviceWdmAssignPowerFrameworkSettings 。 由于设备可以多次启动(例如,如果发生资源重新均衡),因此驱动程序可能会从 EvtDriverDeviceAddEvtDeviceSelfManagedIoInit 中调用此方法。 框架仅调用一次这些函数,即使设备多次启动也是如此。

或者,驱动程序可以跟踪它是否已调用 WdfDeviceWdmAssignPowerFrameworkSettings,并从以下回调函数之一调用它: EvtDevicePrepareHardwareEvtDeviceD0EntryEvtDeviceD0EntryPostInterruptsEnabledEvtDeviceSelfManagedIoRestart

如果驱动程序多次调用 WdfDeviceWdmAssignPowerFrameworkSettings ,框架将生成验证程序错误。

PoFx) (电源管理框架仅在 Windows 8 及更高版本上可用。 在不支持 PoFx 的操作系统上运行时, WdfDeviceWdmAssignPowerFrameworkSettings 不执行任何操作并返回STATUS_SUCCESS。

有关详细信息,请参阅 支持功能电源状态电源管理框架概述

示例

在下面的代码示例中,驱动程序通过调用 WDF_POWER_FRAMEWORK_SETTINGS_INIT 函数来初始化 WDF_POWER_FRAMEWORK_SETTINGS 结构。 然后,驱动程序手动设置结构的一些成员,然后调用 WdfDeviceWdmAssignPowerFrameworkSettings

NTSTATUS status;
WDF_POWER_FRAMEWORK_SETTINGS poFxSettings;

WDF_POWER_FRAMEWORK_SETTINGS_INIT(&poFxSettings);

poFxSettings.EvtDeviceWdmPostPoFxRegisterDevice = 
                        SingleCompWdmEvtDeviceWdmPostPoFxRegisterDevice;
poFxSettings.EvtDeviceWdmPrePoFxUnregisterDevice =
                        SingleCompWdmEvtDeviceWdmPrePoFxUnregisterDevice;

poFxSettings.Component = &component;
poFxSettings.ComponentIdleStateCallback = 
                        SingleCompWdmIdleStateCallback;
poFxSettings.PoFxDeviceContext = (PVOID) Device;
    
status = WdfDeviceWdmAssignPowerFrameworkSettings(Device, &poFxSettings);

要求

要求
最低受支持的客户端 Windows 8
目标平台 通用
最低 KMDF 版本 1.11
最低 UMDF 版本 2.33
标头 wdfdevice.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库版本控制.)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DriverCreate (kmdf)

另请参阅

EvtDeviceWdmPostPoFxRegisterDevice

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT