Partager via


Gestion de l’alimentation WinUSB

WinUSB utilise les machines d’état KMDF pour la gestion de l’alimentation. Les stratégies d’alimentation sont gérées par le biais d’appels à WinUsb_SetPowerPolicy.

Pour modifier le comportement d’alimentation de WinUSB, les paramètres de Registre par défaut peuvent être modifiés dans l’INF de l’appareil. Ces valeurs doivent être écrites à l’emplacement spécifique de l’appareil dans le Registre en ajoutant les valeurs dans le HW. Section AddReg du inf.

Les valeurs de Registre décrites dans la liste suivante peuvent être spécifiées dans l’INF de l’appareil pour modifier le comportement d’alimentation.

Sortie de veille système

Cette fonctionnalité est contrôlée par le paramètre de Registre DWORD SystemWakeEnabled . Cette valeur indique si l’appareil doit être autorisé à réveiller le système à partir d’un état d’alimentation faible.

HKR,,SystemWakeEnabled,0x00010001,1
  • La valeur zéro ou l’absence de cette valeur indique que l’appareil n’est pas autorisé à réveiller le système.
  • Pour permettre à un appareil de réveiller le système, définissez SystemWakeEnabled sur une valeur différente de zéro. Une case à cocher dans la page Propriétés de l’appareil est automatiquement activée afin que l’utilisateur puisse remplacer le paramètre.

Remarque

La modification du paramètre SystemWakeEnabled n’a aucun effet sur la suspension sélective, cette valeur de Registre se rapporte uniquement à la suspension du système.

Interruption sélective

La suspension sélective peut être désactivée par l’un des paramètres système ou WinUSB. Un paramètre unique ne peut pas forcer WinUSB à activer la suspension sélective.

Les paramètres de stratégie d’alimentation suivants spécifiés dans le paramètre PolicyType de WinUsb_SetPowerPolicy affectent le comportement de la suspension sélective :

  • AUTO_SUSPEND Lorsqu’il est défini sur zéro, il ne définit pas l’appareil sur le mode de suspension sélectif.
  • SUSPEND_DELAY Définit le temps entre le moment où l’appareil devient inactif et lorsque WinUSB demande à l’appareil d’être suspendu de manière sélective.

Le tableau suivant montre comment les clés de Registre affectent la fonctionnalité de suspension sélective.

Clé de Registre Description
DeviceIdleEnabled Il s’agit d’une valeur DWORD. Cette valeur de Registre indique si l’appareil est capable d’être mis hors tension en cas d’inactivité (interruption sélective).
  • La valeur zéro ou l’absence de cette valeur indique que l’appareil ne prend pas en charge la mise hors tension lorsqu’il est inactif.
  • Une valeur différente de zéro indique que l’appareil prend en charge l’alimentation en cas d’inactivité.
  • Si DeviceIdleEnabled n’est pas défini, la valeur du paramètre de stratégie d’alimentation AUTO_SUSPEND est ignorée.

HKR,,DeviceIdleEnabled,0x00010001,1
DeviceIdleIgnoreWakeEnable Lorsqu’il est défini sur une valeur différente de zéro, il suspend l’appareil même s’il ne prend pas en charge RemoteWake.
UserSetDeviceIdleEnabled Cette valeur est une valeur DWORD. Cette valeur de Registre indique si une case à cocher doit être activée dans la page Propriétés de l’appareil qui permet à un utilisateur de remplacer les valeurs par défaut inactives. Lorsque UserSetDeviceIdleEnabled est défini sur une valeur différente de zéro, la case à cocher est activée et l’utilisateur peut désactiver la mise hors tension de l’appareil en cas d’inactivité. La valeur zéro ou l’absence de cette valeur indique que la case à cocher n’est pas activée.
  • Si l’utilisateur désactive l’économie d’alimentation de l’appareil, la valeur du paramètre de stratégie d’alimentation AUTO_SUSPEND est ignorée.
  • Si l’utilisateur active l’économie d’alimentation de l’appareil, la valeur de AUTO_SUSPEND est utilisée pour déterminer s’il faut suspendre l’appareil en cas d’inactivité.

UserSetDeviceIdleEnabled est ignoré si DeviceIdleEnabled n’est pas défini.

HKR,,UserSetDeviceIdleEnabled,0x00010001,1
DefaultIdleState Il s’agit d’une valeur DWORD. Cette valeur de Registre définit la valeur par défaut du paramètre de stratégie d’alimentation AUTO_SUSPEND. Cette clé de Registre est utilisée pour activer ou désactiver l’interruption sélective lorsqu’un handle n’est pas ouvert à l’appareil.
  • La valeur zéro ou l’absence de cette valeur indique que par défaut, l’appareil n’est pas suspendu lorsqu’il est inactif. L’appareil est autorisé à s’interrompre en cas d’inactivité uniquement lorsque la stratégie d’alimentation AUTO_SUSPEND est activée.
  • Une valeur différente de zéro indique que par défaut, l’appareil peut être suspendu en cas d’inactivité.

Cette valeur est ignorée si DeviceIdleEnabled n’est pas défini.

HKR,,DefaultIdleState,0x00010001,1
DefaultIdleTimeout Il s’agit d’une valeur DWORD. Cette valeur de Registre définit l’état par défaut du paramètre de stratégie d’alimentation SUSPEND_DELAY.

La valeur indique la durée d’attente en millisecondes avant de déterminer qu’un appareil est inactif.

HKR,,DefaultIdleTimeout,0x00010001,100

Détection de l’inactivité

Tous les transferts d’écriture et de contrôle forcent l’appareil dans l’état d’alimentation D0 et réinitialisent le minuteur d’inactivité. Les files d’attente des points de terminaison IN ne sont pas gérées par l’alimentation. Les demandes de lecture réveillent l’appareil lorsqu’ils sont envoyés. Toutefois, un appareil peut devenir inactif pendant qu’une demande de lecture attend.