共用方式為


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
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 字段設定為 SystemManagedIdleTimeout 或 SystemManagedIdleTimeoutWithHint

驅動程式必須在裝置第一次啟動之前或期間呼叫 WdfDeviceWdmAssignPowerFrameworkSettings 。 因為裝置可以啟動一次以上,例如,如果發生資源重新平衡,驅動程式可能會從 EvtDriverDeviceAddEvtDeviceSelfManagedIoInit 內呼叫此方法。 架構只會呼叫這些函式一次,即使裝置啟動多次也一次。

或者,驅動程式可以追蹤它是否已呼叫 WdfDeviceWdmAssignPowerFrameworkSettings,並從下列其中一個回呼函式呼叫它: EvtDevicePrepareHardwareEvtDeviceD0EntryEvtDeviceD0EntryPostInterruptsEnabledEvtDeviceSelfManagedIoRestart

如果您的驅動程式多次呼叫 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

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT