Функция 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. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Вызывающий драйвер не является владельцем политики питания устройства. |
|
Обнаружено недопустимое значение параметров . |
|
Неправильный размер структуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS . |
|
Это значение возвращается, если происходит одно из следующих действий:
|
Метод может возвращать другие значения NTSTATUS.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Если драйвер задает элемент IdleTimeoutTypeWDF_DEVICE_POWER_POLICY_IDLE_SETTINGSSystemManagedIdleTimeout или SystemManagedIdleTimeoutWithHint, он должен вызвать WdfDeviceAssignS0IdleSettings перед возвратом из EvtDeviceD0Entry. Как правило, драйвер сначала вызывает WdfDeviceAssignS0IdleSettings из EvtDriverDeviceAdd.
Дополнительные вызовы WdfDeviceAssignS0IdleSettings можно выполнить в любое время. Однако после того, как драйвер задает значение элемента IdleTimeoutType в своем первом вызове WdfDeviceAssignS0IdleSettings, он не должен изменять это значение в последующих вызовах этого метода.
Если драйвер регистрируется для асинхронных уведомлений в 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;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия 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) |