WdfDeviceAssignS0IdleSettings 函式 (wdfdevice.h)
[適用於 KMDF 和 UMDF]
WdfDeviceAssignS0IdleSettings 方法會提供驅動程式提供的資訊,讓架構在裝置閑置且系統處於運作 (S0) 狀態時所使用的資訊。
語法
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
參數
[in] Device
架構裝置物件的句柄。
[in] Settings
呼叫端提供的 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 結構的指標。
傳回值
如果作業成功, WdfDeviceAssignS0IdleSettings 會傳回STATUS_SUCCESS。 其他傳回值包括:
傳回碼 | Description |
---|---|
|
呼叫驅動程式不是裝置的電源原則擁有者。 |
|
偵測到無效的 [設定 ] 值。 |
|
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS結構的大小不正確。 |
|
如果發生下列其中一項,則會傳回此值:
|
方法可能會傳回其他 NTSTATUS值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
如果驅動程式將 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 的 IdleTimeoutType 成員設定為SystemManagedIdleTimeout 或 SystemManagedIdleTimeoutWithHint,它必須先呼叫 WdfDeviceAssignS0IdleSettings,再從 EvtDeviceD0Entry 傳回。 一般而言,驅動程式會先從 EvtDriverDeviceAdd 呼叫 WdfDeviceAssignS0IdleSettings。
您可以隨時呼叫 WdfDeviceAssignS0IdleSettings 。 不過,在驅動程式第一次呼叫 WdfDeviceAssignS0IdleSettings 時設定 IdleTimeoutType 成員的值之後,它不得在稍後呼叫此方法時變更此值。
如果驅動程式在 EvtDriverDeviceAdd (中註冊異步通知,例如呼叫 PoRegisterPowerSettingCallback 或 IoRegisterPlugPlayNotification) ,則驅動程式後續不得從其註冊的驅動程式回呼例程內呼叫 WdfDeviceAssignS0IdleSettings 。
如需詳細資訊,請參閱 支援閑置電源關閉。
範例
下列程式代碼範例會初始化 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 結構、設定 10 秒的閒置逾時值,並呼叫 WdfDeviceAssignS0IdleSettings。
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
NTSTATUS status = STATUS_SUCCESS;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(
&idleSettings,
IdleCanWakeFromS0
);
idleSettings.IdleTimeout = 10000;
status = WdfDeviceAssignS0IdleSettings(
device,
&idleSettings
);
if (!NT_SUCCESS(status)) {
return status;
}
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfdevice.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) , FDOPowerPolicyOwnerAPI (kmdf) , KmdfIrql (kmdf) , KmdfIrql2 (kmdf ) , KmdfIrqlExplicit (kmdf) , NonFDONotPowerPolicyOwnerAPI (kmdf) |