Un utilisateur se connecte à un appareil
Dans le scénario suivant, le nœud d’appareil inclut un pilote de bus KMDF et un ou plusieurs pilotes de fonction ou de filtre KMDF qui prennent en charge un périphérique PnP.
Lorsqu’un utilisateur branche l’appareil dans le bus pendant que le système est en cours d’exécution, le pilote de bus de l’appareil et l’infrastructure effectuent les tâches suivantes :
Le pilote de bus de l’appareil détecte l’appareil et appelle WdfChildListAddOrUpdateChildDescriptionAsPresent. (Ce processus est appelé « énumération dynamique . »)
L’infrastructure appelle la fonction de rappel EvtChildListCreateDevice du pilote de bus, ce qui permet au pilote de bus d’appeler WdfDeviceCreate afin de créer un objet d’appareil d’infrastructure pour l’appareil physique (PDO).
L’infrastructure appelle les fonctions de rappel EvtDeviceResourcesQuery et EvtDeviceResourceRequirementsQuery du pilote de bus pour déterminer les ressources matérielles système requises par l’appareil.
Pour plus d’informations sur la séquence de mise sous tension d’un pilote de bus KMDF, consultez Séquence de mise sous tension pour un pilote de bus.
Ensuite, le gestionnaire PnP détermine les pilotes supplémentaires (pilotes de fonction et pilotes de filtre) dont le périphérique a besoin. Si ces pilotes ne sont pas déjà chargés, le gestionnaire PnP les charge et appelle leurs routines DriverEntry . Pour chaque pilote de fonction ou de filtre, les actions suivantes se produisent :
L’infrastructure appelle la fonction de rappel EvtDriverDeviceAdd de chaque pilote supplémentaire afin que le pilote puisse appeler WdfDeviceCreate pour créer un objet de périphérique d’infrastructure qui représente le périphérique pour le pilote. Les pilotes de fonction créent un objet d’appareil fonctionnel (FDO) et les pilotes de filtre créent un objet de périphérique de filtre (Filter DO).
L’infrastructure appelle la fonction de rappel EvtDeviceFilterRemoveResourceRequirements de chaque fonction et du pilote de filtre, puis la fonction de rappel EvtDeviceFilterAddResourceRequirements de chaque pilote. Immédiatement avant le démarrage de l’appareil, l’infrastructure appelle la fonction de rappel EvtDeviceRemoveAddedResources . Ces trois fonctions de rappel permettent au filtre et aux pilotes de fonction de modifier la liste des ressources matérielles requises par l’appareil, avant que le gestionnaire PnP n’affecte des ressources à l’appareil. Pour plus d’informations, consultez Ressources matérielles pour les pilotes Framework-Based
L’infrastructure garantit que l’appareil a atteint son état d’alimentation opérationnel (D0).
Pour chaque pilote de fonction et de filtre qui prend en charge le périphérique, l’infrastructure effectue les opérations suivantes, dans l’ordre, un pilote à la fois, en commençant par le pilote le plus bas dans la pile de pilotes :
- L’infrastructure appelle la fonction de rappel EvtDevicePrepareHardware du pilote (si elle existe) et transmet la liste des ressources matérielles que le gestionnaire PnP a affectées à l’appareil.
- L’infrastructure appelle la fonction de rappel EvtDeviceD0Entry du pilote (si elle existe).
- L’infrastructure appelle la fonction de rappel EvtInterruptEnable du pilote (si elle existe) pour chaque interruption, puis appelle la fonction de rappel EvtDeviceD0EntryPostInterruptsEnabled du pilote (si elle existe), afin que le pilote puisse activer les interruptions de périphérique.
- Si le matériel et le pilote prennent en charge DMA, le framework appelle les fonctions de rappel EvtDmaEnablerFill, EvtDmaEnablerEnable et EvtDmaEnablerSelfManagedIoStart du pilote (le cas échéant) pour chaque canal DMA créé.
- L’infrastructure appelle la fonction de rappel EvtChildListScanForChildren du pilote (si elle existe).
- L’infrastructure démarre toutes les files d’attente d’E/S gérées par l’alimentation de l’appareil.
- Si le pilote utilise des E/S autogérées, le framework appelle la fonction de rappel EvtDeviceSelfManagedIoInit du pilote.
Pour plus d’informations sur la séquence de mise sous tension pour la fonction KMDF ou les pilotes de filtre, consultez Séquence de mise sous tension pour une fonction ou Pilote de filtre.