Partager via


DeviceWake

Le membre DeviceWake de DEVICE_CAPABILITIES contient l’état d’alimentation de l’appareil le plus bas (le moins alimenté) à partir duquel l’appareil peut signaler un événement de veille, ou PowerDeviceUnspecified si l’appareil ne peut pas se réveiller en réponse à un signal externe.

Le pilote de bus définit cette valeur. Un pilote de niveau supérieur peut modifier la valeur à un état plus puissant. Par exemple, si le pilote de bus définit DeviceWake sur D3, mais qu’un pilote plus haut dans la pile d’appareils prend en charge la mise en éveil uniquement à partir de D2, le pilote de niveau supérieur peut modifier la valeur sur D2.

Notez que si un pilote change DeviceWake, il peut également devoir modifier SystemWake pour éviter les conflits avec les mappages système à appareil dans le tableau DeviceState . Par exemple, supposons que le pilote de bus définit les éléments suivants :

  • DeviceState[PowerSystemSleeping1] = PowerDeviceD1

  • DeviceState[PowerSystemSleeping2] = PowerDeviceD3

  • DeviceWake = PowerDeviceD3

  • SystemWake = PowerSystemSleeping2

Si un pilote de niveau supérieur détermine que son appareil ne peut pas sortir le système de D3, mais uniquement à partir de D2 ou supérieur, il peut remplacer DeviceWake par D2. Toutefois, cette modification rend impossible le mappage de S2 à D3. N’oubliez pas que le tableau DeviceState répertorie l’état d’alimentation de l’appareil le plus élevé qu’un appareil peut prendre en charge pour un état d’alimentation système donné. Si l’état d’alimentation du système dans l’exemple est PowerSystemSleeping2, l’état d’alimentation de l’appareil ne peut pas être PowerDeviceD2. Pour éliminer ce problème, le pilote doit également remplacer SystemWake par PowerSystemSleeping1. Il en est de même pour les paramètres WakeFromDx et DeviceDx . Un pilote doit s’assurer que les modifications apportées à SystemWake ou DeviceWake ne sont pas en conflit avec les valeurs WakeFromDx et DeviceDx . Les valeurs de WakeFromDx et DeviceDx reflètent les caractéristiques matérielles qu’un pilote ne peut pas modifier.

Si les membres SystemWake et DeviceWake ne sont pas nuls (c’est-à-dire pas PowerSystemUnspecified), l’appareil et ses pilotes prennent en charge la mise en veille sur ce système.

Sur le matériel non ACPI, le membre DeviceWake contient zéro (PowerSystemUnspecified).