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


Поддержка 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 см. в статье Обзор платформы управления питанием.