Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un pilote de périphérique doit éviter d’interroger son appareil, sauf s’il est absolument nécessaire et ne doit jamais utiliser une tranche de temps entière pour l’interrogation. L’interrogation d’un appareil est une opération coûteuse qui rend tout système d’exploitation lié au calcul dans le pilote d’interrogation. Un pilote de périphérique qui effectue beaucoup d’interrogation interfère avec les opérations d’E/S sur d’autres appareils et peut rendre le système lent et sans réponse aux utilisateurs.
Les appareils récemment développés, qui sont aussi avancés technologiquement que les processeurs sur lesquels Windows est conçu pour s’exécuter, nécessitent rarement un pilote pour interroger son appareil, soit pour s’assurer que l’appareil est prêt à démarrer une opération d’E/S ou qu’une opération est terminée.
Néanmoins, certains appareils encore en cours d’utilisation ont été conçus pour fonctionner avec d’anciens processeurs, qui avaient des bus de données étroits, des fréquences d’horloge lentes et des systèmes d’exploitation mono-tâche à un seul utilisateur qui ont effectué des E/S synchrones. Ces appareils peuvent nécessiter une interrogation ou un autre moyen d’attendre que l’appareil met à jour ses registres.
Bien qu'il semble logique de résoudre un problème de lenteur de l'appareil en codant une boucle simple qui incrémente un compteur, pour ainsi « gaspiller » un intervalle minimal pendant que l'appareil met à jour ses registres, un tel pilote est peu susceptible d'être portable sur la plateforme Windows. Le compteur de boucle maximal nécessiterait une personnalisation pour chaque plateforme. En outre, si le pilote est compilé avec un bon compilateur d’optimisation, le compilateur peut supprimer la variable de compteur du pilote et la ou les boucles où elle est incrémentée.
Note Suivez cette directive d'implémentation si le pilote doit se bloquer pendant que le matériel du dispositif est mis à jour : un pilote peut appeler KeStallExecutionProcessor avant de lire les registres du dispositif. Le pilote doit réduire l'intervalle pendant lequel il se bloque et doit, en général, spécifier un intervalle de blocage ne dépassant pas 50 microsecondes.
La granularité d’un intervalle KeStallExecutionProcessor est d’un microseconde.
Si l’appareil nécessite fréquemment plus de 50 microsecondes pour mettre à jour l’état, envisagez de configurer un thread dédié à l’appareil dans le pilote.