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 值,指出作業成功或失敗。
傳回碼 | Description |
---|---|
|
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 ,架構會產生驗證程序錯誤。
Power Management Framework (PoFx) 僅適用於 Windows 8 和更新版本。 在不支援 PoFx 的操作系統上執行時, WdfDeviceWdmAssignPowerFrameworkSettings 不會採取任何動作,並傳回STATUS_SUCCESS。
如需詳細資訊,請參閱 支援功能電源狀態 和 Power Management Framework 概觀。
範例
在下列程式代碼範例中,驅動程式會呼叫 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 |
目標平台 | Universal |
最低 KMDF 版本 | 1.11 |
最低UMDF版本 | 2.33 |
標頭 | wdfdevice.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) |
另請參閱
EvtDeviceWdmPostPoFxRegisterDevice