Implémentation du minuteur d’inactivité de la classe d’appareil audio
Le pilote système PortCls utilise les fonctionnalités de détection de l’inactivité du système pour implémenter un minuteur d’inactivité pour ses clients audio. PortCls programme deux valeurs de délai d’attente et un état d’alimentation inactif souhaité dans le minuteur lorsqu’il l’initialise. PortCls surveille tous les accès (par exemple, les accès aux E/S et aux propriétés) de l’appareil et réinitialise efficacement le nombre de minuteurs sur chaque accès. Si le minuteur expire, le système demande un IRP d’alimentation pour placer l’appareil dans l’état d’inactivité souhaité. Une fois l’appareil placé dans l’état inactif, PortCls l’alimente en cas de nouvelle activité d’accès.
PortCls contient des valeurs par défaut codées en dur pour les délais d’inactivité et l’état d’inactivité de l’alimentation. Les fournisseurs de matériel peuvent éventuellement remplacer les valeurs par défaut en écrivant leurs propres valeurs dans des clés spécifiques au pilote dans le registre système. De cette façon, les fournisseurs peuvent sélectionner les valeurs de paramètre d’inactivité qui conviennent le mieux à leurs appareils.
Les fournisseurs peuvent remplacer les valeurs par défaut des paramètres d’inactivité de l’alimentation suivants :
ConservationIdleTime
Ce paramètre spécifie l’intervalle de délai d’inactivité lorsque le système s’exécute en mode de conservation de l’alimentation. Il s’agit du mode qui est généralement utilisé lorsque le système fonctionne sur batterie. La valeur par défaut de ce paramètre est 0, ce qui désactive le minuteur d’inactivité de l’alimentation en mode conservation. Le fournisseur de matériel peut définir la valeur à l’aide d’un fichier inf comme celui-ci.
[MyAudioDevice.AddReg] HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
Le fragment de fichier INF précédent montre une valeur hexadécimale (hexadécimale) de « 1e » pour conservationIdleTime, ce qui équivaut à un délai d’inactivité de 30 secondes.
FLG_ADDREG_BINVALUETYPE
Les autres paramètres sont utilisés pour contrôler la façon dont la clé de Registre est ajoutée. Par exemple %REG_BINARY% indique que les données sont stockées en tant que données « brutes ». Pour plus d’informations, consultez Directive INF AddReg.
PerformanceIdleTime
Ce paramètre spécifie l’intervalle de délai d’inactivité lorsque le système s’exécute en mode de performances. Il s’agit du mode qui est généralement utilisé lorsque le système s’exécute sur l’alimentation secteur. La valeur par défaut de ce paramètre est 0, ce qui désactive le minuteur d’inactivité de l’alimentation en mode de performances.
Le fournisseur de matériel peut définir la valeur à l’aide d’un fichier inf comme celui-ci.
[MyAudioDevice.AddReg] HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
La valeur de la clé spécifie l’intervalle de délai d’attente en secondes. Dans cet exemple, la valeur 2c,01 sera de 300 secondes, ou cinq minutes.
IdlePowerState
Ce paramètre spécifie l’état d’alimentation dans lequel l’appareil sera placé si le délai d’inactivité expire. La valeur par défaut de ce paramètre est 3, ce qui correspond à l’état d’alimentation de l’appareil D3, qui est l’état de faible puissance de l’appareil le plus faible. Le fournisseur de matériel peut définir la valeur à l’aide d’un fichier inf comme celui-ci.
[MyAudioDevice.AddReg] HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
La valeur placée dans la clé doit être 0, 1, 2 ou 3, correspondant à l’état d’alimentation de l’appareil D0, D1, D2 ou D3, respectivement.
Les trois clés de Registre inactives de l’alimentation existent uniquement si le fichier INF d’installation de l’appareil les crée. Avant de configurer le minuteur d’inactivité de l’alimentation, PortCls tente de récupérer les paramètres d’inactivité de l’alimentation propres au pilote à partir du Registre. PortCls utilise les valeurs par défaut à la place de tous les paramètres d’inactivité de l’alimentation qu’il ne trouve pas dans le Registre. Comme expliqué précédemment, les valeurs de paramètre d’inactivité par défaut désactivent le minuteur d’inactivité.
Pour plus d’informations sur la spécification des paramètres ConservationIdleTime, PerformanceIdleTime et IdlePowerState , consultez les définitions des trois derniers paramètres d’appel dans PoRegisterDeviceForIdleDetection.
Exemple
Par exemple, un fournisseur de matériel peut souhaiter spécifier les paramètres d’inactivité de l’alimentation suivants pour un périphérique audio : ConservationIdleTime = 0x0000001e (30 secondes), PerformanceIdleTime = 0x0000012c (300 secondes) et IdlePowerState = 0x00000003 (état d’alimentation de l’appareil D3). Pour activer ces paramètres, le fichier d’installation de l’appareil peut inclure une section INF AddReg contenant les directives suivantes :
[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00