Поделиться через


Поддержка устройств Multiple-Component с одним или несколькими функциональными состояниями питания

[Применимо только к KMDF]

Драйвер KMDF для устройства с несколькими компонентами может определять одно или несколько функциональных состояний питания для каждого компонента.

В этом случае драйвер регистрируется непосредственно в платформе управления питанием (PoFx). Чтобы указать, что WDF не должен регистрироваться в PoFx, драйвер вызывает WdfDeviceAssignS0IdleSettings с элементом IdleTimeoutType структуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, установленным на DriverManagedIdleTimeout. Как правило, драйвер вызывает этот метод из функции обратного вызова EvtDriverDeviceAdd.

Затем драйвер должен зарегистрироваться в PoFx. Для этого драйвер вызывает PoFxRegisterDevice, а затем PoFxStartDevicePowerManagement. Драйвер должен зарегистрироваться в PoFx только один раз, при первом запуске устройства. Одним из способов этого является вызов этих подпрограмм из предоставленной драйвером функции EvtDeviceSelfManagedIoInit. EvtDeviceSelfManagedIoInit вызывается только при первом запуске устройства.

При удалении устройства драйвер должен вызвать PoFxUnregisterDevice, чтобы отменить регистрацию устройства из PoFx. Чтобы отменить регистрацию только один раз, рекомендуется вызвать эту подпрограмму из предоставленной драйвером функции EvtDeviceSelfManagedIoFlush. EvtDeviceSelfManagedIoFlush вызывается только при удалении устройства. Отменив регистрацию в EvtDeviceSelfManagedIoFlush, драйвер сохраняет регистрацию состояния питания во время переходов в состояние сна и перебалансировки и не должен поддерживать ссылки на питание для запросов ввода-вывода, которые остаются в ожидании во время этих переходов.

Когда драйвер вызывает PoFxRegisterDevice, он получает дескриптор регистрации питания (POHANDLE), который он может использовать для взаимодействия напрямую с PoFx, как описано в следующих разделах:

Кроме того, драйвер может вызывать подпрограммы power Framework напрямую для отправки запросов на управление питанием и указания требований к задержке, времени пребывания и пробуждению.

Дополнительные сведения о PoFx см. в Обзорефреймворка управления питанием.