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 dans l’emplacement spécifique de l’appareil dans le Registre en ajoutant les valeurs dans le HW. Section AddReg de l’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 de l’alimentation.

Éveil du 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é à sortir le système d’un état de faible consommation.

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

Notes

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

Suspension sélective

La suspension sélective peut être désactivée par plusieurs 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 Lorsque la valeur est définie sur zéro, elle ne définit pas l’appareil en mode de suspension sélective.
  • SUSPEND_DELAY Définit le temps entre le moment où l’appareil devient inactif et celui où WinUSB demande à l’appareil de passer en suspension 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 peut être mis hors tension en cas d’inactivité (suspension 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 en cas d’inactivité.
  • Une valeur différente de zéro indique que l’appareil prend en charge la mise hors tension 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 zone de case activée 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 zone case activée 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 zone case activée n’est pas activée.
  • Si l’utilisateur désactive les économies d’énergie des appareils, la valeur du paramètre de stratégie d’alimentation AUTO_SUSPEND est ignorée.
  • Si l’utilisateur active les économies d’énergie 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 permet d’activer ou de désactiver l’interruption sélective lorsqu’un handle n’est pas ouvert sur l’appareil.
  • La valeur zéro ou l’absence de cette valeur indique que par défaut, l’appareil n’est pas suspendu en cas d’inactivité. L’appareil doit être 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 l’appareil peut être suspendu par défaut 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 le temps d’attente en millisecondes avant de déterminer qu’un appareil est inactif.

HKR,,DefaultIdleTimeout,0x00010001,100

Détection des inactifs

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