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).
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.
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.
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.
Rubriques connexes
- Architecture et modules WinUSB
- Choix d’un modèle de pilote pour le développement d’un pilote client USB
- WinUSB (Winusb.sys) Installation
- Comment accéder à un périphérique USB à l’aide de fonctions WinUSB
- WinUSB Functions for Pipe Policy Modification
- Fonctions WinUSB
- WinUSB
- WinUsb_GetPowerPolicy
- WinUsb_SetPowerPolicy
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour