Fonction PoRegisterDeviceForIdleDetection (wdm.h)
La routine PoRegisterDeviceForIdleDetection active ou annule la détection d’inactivité et définit des valeurs de délai d’inactivité pour un appareil.
Syntaxe
PULONG PoRegisterDeviceForIdleDetection(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG ConservationIdleTime,
[in] ULONG PerformanceIdleTime,
[in] DEVICE_POWER_STATE State
);
Paramètres
[in] DeviceObject
Pointeur vers le DEVICE_OBJECT créé par le pilote pour l’appareil. Sur les systèmes Windows 2000 et versions ultérieures, ce paramètre peut pointer vers un objet d’appareil physique (PDO) ou un objet d’appareil fonctionnel (FDO). Sur Windows 98/Me, ce paramètre doit pointer vers l’AOP de l’appareil sous-jacent.
[in] ConservationIdleTime
Définit la valeur de délai d’attente (en secondes) à appliquer lorsque la stratégie d’alimentation du système optimise la conservation de l’énergie. Spécifiez zéro pour désactiver la détection d’inactivité lorsque la stratégie de conservation est appliquée.
[in] PerformanceIdleTime
Définit la valeur de délai d’attente (en secondes) à appliquer lorsque la stratégie d’alimentation du système optimise les performances. Spécifiez zéro pour désactiver la détection d’inactivité lorsque la stratégie de performances est en vigueur.
[in] State
Spécifie l’état d’alimentation de l’appareil à demander dans une demande de IRP_MN_SET_POWER lorsque ConservationIdleTime ou PerformanceIdleTime a été atteint. Les valeurs possibles sont les valeurs DEVICE_POWER_STATE .
Valeur retournée
PoRegisterDeviceForIdleDetection retourne un pointeur vers le compteur inactif pour indiquer que la détection d’inactivité a été activée. Elle retourne NULL pour indiquer que la détection d’inactivité a été désactivée, qu’un compteur inactif n’a pas pu être alloué ou que l’une des valeurs de délai d’attente ou les deux n’étaient pas valides.
Remarques
PoRegisterDeviceForIdleDetection permet aux pilotes d’utiliser le mécanisme de détection d’inactivité fourni par le gestionnaire d’alimentation. Les pilotes appellent PoRegisterDeviceForIdleDetection pour l’une des raisons suivantes :
- Pour activer la détection d’inactivité pour l’appareil et définir les valeurs de délai d’inactivité initiales
- Pour modifier les valeurs de délai d’inactivité d’un appareil
- Pour désactiver la détection d’inactivité pour un appareil
Chaque fois que l’appareil satisfait à la valeur actuelle du délai d’inactivité, le gestionnaire d’alimentation envoie une demande de IRP_MN_SET_POWER en haut de la pile de l’appareil, en spécifiant l’état d’alimentation de l’appareil. En réponse à l’IRP, chaque pilote effectue toutes les tâches spécifiques au périphérique requises avant la transition de l’état d’alimentation, puis transmet l’IRP au pilote inférieur suivant. Lorsque l’IRP atteint le pilote de bus, ce pilote place le périphérique dans l’état d’alimentation inférieure demandé et termine l’IRP.
PoRegisterDeviceForIdleDetection définit des valeurs de délai d’attente pour la conservation et les performances. La valeur ConservationIdleTime s’applique lorsque la stratégie d’alimentation du système optimise la conservation ; La valeur PerformanceIdleTime s’applique lorsque la stratégie d’alimentation système optimise les performances. En règle générale, la stratégie applicable dépend de la source d’alimentation : lors de l’exécution avec l’alimentation secteur, le système optimise les performances, et lorsque vous utilisez une batterie, le système optimise la conservation.
Certains appareils peuvent spécifier des valeurs de délai d’attente de -1 pour utiliser les délais d’expiration de la stratégie d’alimentation standard pour leur classe d’appareil. Les valeurs de délai d’attente standard fournissent une meilleure intégration du système pour les classes d’appareils standard prises en charge. Actuellement, WDM prend en charge cette fonctionnalité pour les appareils de type FILE_DEVICE_DISK et FILE_DEVICE_MASS_STORAGE. PoRegisterDeviceForIdleDetection retourne null si -1 est spécifié pour un appareil d’un type non pris en charge. (Pour plus d’informations sur les types d’appareils, consultez Spécification des types d’appareils.)
Une seule détection d’inactivité peut être définie par appareil. Les appels suivants à PoRegisterDeviceForIdleDetection modifient les valeurs de détection d’inactivité.
Si ConservationIdleTime et PerformanceIdleTime sont tous deux zéro, cette routine annule toutes les détections d’inactivité pour l’appareil et retourne NULL.
PoRegisterDeviceForIdleDetection peut libérer un pilote de la nécessité d’effectuer sa propre détection d’inactivité. Toutefois, les pilotes peuvent également implémenter leur propre détection d’inactivité.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |