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 值,该值指示操作成功或失败。
返回代码 | 说明 |
---|---|
|
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS结构的大小不正确。 |
|
调用驱动程序不是设备的电源策略所有者。 |
|
检测到 无效的“设置” 值。 |
此方法还可能返回其他 NTSTATUS 值。
注解
WdfDeviceWdmAssignPowerFrameworkSettings 方法仅适用于单组件设备。
在调用此方法之前,客户端驱动程序必须先成功调用 WdfDeviceAssignS0IdleSettings,并将 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 结构的 IdleTimeoutType 字段设置为 SystemManagedIdleTimeout 或 SystemManagedIdleTimeoutWithHint。
驱动程序必须在设备首次启动之前或期间调用 WdfDeviceWdmAssignPowerFrameworkSettings 。 由于设备可以多次启动(例如,如果发生资源重新均衡),因此驱动程序可能会从 EvtDriverDeviceAdd 或 EvtDeviceSelfManagedIoInit 中调用此方法。 框架仅调用一次这些函数,即使设备多次启动也是如此。
或者,驱动程序可以跟踪它是否已调用 WdfDeviceWdmAssignPowerFrameworkSettings,并从以下回调函数之一调用它: EvtDevicePrepareHardware、 EvtDeviceD0Entry、 EvtDeviceD0EntryPostInterruptsEnabled 或 EvtDeviceSelfManagedIoRestart。
如果驱动程序多次调用 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