Partage des ressources du processeur au démarrage à partir d’un état Low-Power
Lorsqu’un ordinateur démarre à partir d’un état de veille ou de mise en veille prolongée (démarrage à chaud), les pilotes doivent éviter d’utiliser les ressources du processeur plus longtemps que nécessaire. Plus important encore, les routines d’appel de procédure différée (DPC) et le code qui s’exécute à IRQL >= DISPATCH_LEVEL doivent limiter leurs temps d’exécution au minimum. Les pilotes utilisent des routines DPC pour faciliter l’initialisation des appareils. Les pilotes peuvent avoir besoin d’exécuter le code d’initialisation à DISPATCH_LEVEL dans le cadre d’un contrat d’interface port-miniport.
Pendant qu’une routine DPC s’exécute, d’autres threads de priorité inférieure ne peuvent pas s’exécuter sur le même processeur. En outre, d’autres routines DPC mises en file d’attente et prêtes à être exécutées peuvent être bloquées jusqu’à ce que la DPC actuelle soit terminée. Pour permettre à d’autres threads de s’exécuter rapidement, une routine DPC classique ne doit pas s’exécuter pendant plus de 100 microsecondes.
Une routine DPC qui s’exécute trop longtemps au démarrage du système peut retarder l’initialisation d’autres appareils. Ce délai allonge la phase d’initialisation de l’appareil et retarde l’achèvement du démarrage par le système d’exploitation.
Utilisez les meilleures pratiques suivantes pour concevoir vos routines DPC :
Une seule routine DPC ne doit pas s’exécuter pendant plus de 100 microsecondes.
Les routines DPC qui appellent la routine KeStallExecutionProcessor pour retarder l’exécution ne doivent pas spécifier des délais de plus de 100 microsecondes.
Si une tâche nécessite plus de 100 microsecondes et s’exécute à DISPATCH_LEVEL, la routine DPC doit se terminer après 100 microsecondes et planifier une ou plusieurs routines de minuteur DPC pour terminer la tâche ultérieurement.
Utilisez les outils d’analyse des performances qui sont documentés dans WDK pour évaluer les temps d’exécution des routines DPC.