Partager via


Recommandations de conception pour le démarrage d’appareils

  • Le gestionnaire PnP échoue à créer des demandes pour l’appareil jusqu’à ce que la IRP_MN_START_DEVICE IRP se termine, ce qui indique que tous les pilotes de l’appareil ont effectué leurs opérations de démarrage.

  • Étant donné qu’une routine DispatchPnP s’exécute dans le contexte d’un thread système au PASSIVE_LEVEL IRQL, toute mémoire allouée avec ExAllocatePoolWithTag pour une utilisation exclusive pendant l’initialisation peut provenir d’un pool paginé tant que le pilote ne contrôle pas l’appareil qui contient un fichier de page système. Une telle allocation de mémoire doit être libérée avec ExFreePool avant que la routine DispatchPnP retourne le contrôle.

  • L’ISR d’un pilote de périphérique WDM doit être en mesure de déterminer s’il a été appelé avec une interruption fallacieuse même au démarrage de l’appareil. Au retour de l’appel à IoConnectInterrupt dans le chemin de code qui gère IRP_MN_START_DEVICE, l’ISR peut être appelé immédiatement si les interruptions sont activées sur l’appareil.