Поддержка 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, как описано в следующих разделах:
- Координация запросов ввода-вывода с состоянием питания компонента
- Устройство отчетов включено при возврате системы в S0
- Поддержка Power-Down бездействия на устройствах Multiple-Component
Кроме того, драйвер может вызывать подпрограммы Power Framework напрямую для отправки запросов на управление питанием и указания требований к задержке, месту проживания и пробуждению.
Дополнительные сведения о PoFx см. в статье Обзор платформы управления питанием.