Gestion des demandes d’énumération

Le gestionnaire PnP peut demander à un pilote de bus d’énumérer ses enfants à tout moment. (Si vous êtes familiarisé avec les interfaces WDM, les demandes d’énumération sont IRP_MN_QUERY_DEVICE_RELATIONS les requêtes avec un type de relation BusRelations.) Les pilotes basés sur l’infrastructure ne voient pas ces demandes. Au lieu de cela, l’infrastructure gère les requêtes à l’aide des informations stockées dans la liste enfant d’un appareil. Le pilote est responsable de la mise à jour de la liste enfant afin que l’infrastructure puisse fournir des informations correctes lorsque le gestionnaire PnP demande une énumération.

Les pilotes de bus basés sur l’infrastructure qui prennent en charge l’énumération dynamique peuvent recevoir une demande de rééumation d’un appareil enfant particulier. Une telle demande peut être envoyée par le pilote de fonction de l’appareil enfant une fois que le pilote a détecté une défaillance de l’appareil. (L’infrastructure prend en charge ce type de requête en implémentant l’interface REENUMERATE_SELF_INTERFACE_STANDARD , qui est une interface standard définie par le pilote définie dans wdm.h.)

Les pilotes de bus basés sur l’infrastructure qui prennent en charge l’énumération dynamique peuvent fournir une fonction de rappel EvtChildListDeviceReenumerated , que l’infrastructure appelle lorsqu’elle reçoit une demande de rééumation du pilote d’un appareil enfant. Si cette fonction de rappel retourne TRUE ou n’existe pas, l’infrastructure marque l’appareil enfant comme n’étant plus présent et informe le gestionnaire PnP que la liste enfant du pilote de bus a changé. Par conséquent, le gestionnaire PnP demande une nouvelle énumération et l’infrastructure appelle la fonction de rappel EvtChildListCreateDevice du pilote, ce qui crée un nouvel AOP pour l’appareil enfant.