Instructions pour l’écriture de routines de rappel de notification PnP
Le gestionnaire PnP appelle les routines de rappel de notification à IRQL = PASSIVE_LEVEL.
Pour garantir le bon fonctionnement du sous-système PnP, une routine de rappel de notification PnP doit suivre les instructions suivantes :
Une routine de rappel de notification ne doit pas se bloquer.
Une routine de rappel de notification ne doit pas appeler ou provoquer un appel à des routines synchrones qui génèrent des événements PnP ou toute routine qui bloque l’attente de l’installation ou de la suppression de l’appareil.
L’appel de ces routines pendant un rappel de notification peut entraîner un blocage du système.
Par exemple, un pilote ne doit pas appeler IoReportTargetDeviceChange dans une routine de rappel de notification. Appelez à la place IoReportTargetDeviceChangeAsynchronous .
Une routine de rappel de notification doit retourner la réussite pour tous les événements qui n’échouent pas explicitement.
Lorsqu’un pilote s’inscrit pour recevoir une notification sur une catégorie d’événements, le gestionnaire PnP informe le pilote de tous les événements de cette catégorie, présents et futurs. Si un pilote retourne une erreur status pour des événements qu’il ne gère pas, il risque de faire échouer un nouvel événement de requête par erreur.
Un pilote retourne correctement une erreur status lorsque, par exemple, le pilote échoue à une notification de requête pour opposer son veto à l’événement proposé.
Une routine de rappel de notification doit être paginée.