Prise en charge des appareils Multiple-Component avec un ou plusieurs états d’alimentation fonctionnels

[S’applique à KMDF uniquement]

Un pilote KMDF pour un appareil à plusieurs composants peut définir un ou plusieurs états d’alimentation fonctionnels pour chaque composant.

Dans ce cas, le pilote s’inscrit directement auprès de l’infrastructure de gestion de l’alimentation (PoFx). Pour spécifier que WDF ne doit pas s’inscrire auprès de PoFx, le pilote appelle WdfDeviceAssignS0IdleSettings avec le membre IdleTimeoutType de la structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS défini sur DriverManagedIdleTimeout. En règle générale, le pilote appelle cette méthode à partir de sa fonction de rappel EvtDriverDeviceAdd .

Ensuite, le pilote doit s’inscrire auprès de PoFx. Pour ce faire, le pilote appelle PoFxRegisterDevice , puis PoFxStartDevicePowerManagement. Votre pilote ne doit s’inscrire auprès de PoFx qu’une seule fois, lors du premier démarrage de l’appareil. Pour ce faire, vous pouvez appeler ces routines à partir d’une fonction EvtDeviceSelfManagedIoInit fournie par le pilote. EvtDeviceSelfManagedIoInit est appelé uniquement la première fois que l’appareil est démarré.

Lorsque l’appareil est supprimé, le pilote doit appeler PoFxUnregisterDevice pour désinscrire l’appareil de PoFx. Pour annuler l’inscription une seule fois, nous recommandons au pilote d’appeler cette routine à partir d’une fonction EvtDeviceSelfManagedIoFlush fournie par le pilote. EvtDeviceSelfManagedIoFlush est appelé uniquement lorsque l’appareil est supprimé. En annulant l’inscription dans EvtDeviceSelfManagedIoFlush, le pilote conserve l’enregistrement de l’alimentation pendant les transitions de veille et de rééquilibrage et n’a pas à conserver les références d’alimentation pour les demandes d’E/S qui restent en attente pendant ces transitions.

Lorsque le pilote appelle PoFxRegisterDevice, il reçoit un handle d’enregistrement de l’alimentation (POHANDLE) qu’il peut utiliser pour interagir directement avec PoFx, comme décrit dans les rubriques suivantes :

En outre, le pilote peut appeler des routines d’infrastructure d’alimentation directement pour envoyer des demandes de contrôle d’alimentation et spécifier des exigences de latence, de résidence et de veille.

Pour plus d’informations sur PoFx, consultez Vue d’ensemble de l’infrastructure de gestion de l’alimentation.