Modification d’une liste des ressources requises
Une fois que le gestionnaire PnP s’est assuré que tous les pilotes d’un appareil nouvellement connecté ont été chargés, il envoie la liste de la configuration matérielle requise de l’appareil à la pile de pilotes de l’appareil.
À mesure que la liste descend de la pile, l’infrastructure appelle la fonction de rappel EvtDeviceFilterRemoveResourceRequirements de chaque fonction et du pilote de filtre, en passant la liste de la configuration matérielle requise en tant qu’argument d’entrée. Cette fonction de rappel peut supprimer des ressources matérielles de la liste matérielle requise que le pilote de bus a spécifiée, mais que le pilote de fonction détermine que ne sont pas nécessaires pour le fonctionnement de l’appareil.
Par exemple, un pilote de bus PCI peut, conformément à la spécification PCI, répliquer une ressource d’espace d’E/S dans l’espace mémoire. Si votre appareil peut fonctionner sans utiliser la ressource d’espace d’E/S, le pilote de fonction de l’appareil peut supprimer la ressource d’espace d’E/S de la liste des configurations matérielles requises.
Pour supprimer des éléments de la liste des exigences, un pilote peut effectuer les opérations suivantes :
- Appelez les méthodes suivantes pour modifier les configurations logiques dans la liste des ressources requises :
- WdfIoResourceRequirementsListGetCount, pour obtenir le nombre de configurations logiques.
- WdfIoResourceRequirementsListGetIoResList, pour obtenir l’accès à une configuration logique.
- WdfIoResourceRequirementsListRemove et WdfIoResourceRequirementsListRemoveByIoResList, pour supprimer une configuration logique.
- Appelez les méthodes suivantes pour modifier les descripteurs de ressources dans une configuration logique :
- WdfIoResourceListGetCount, pour obtenir le nombre de descripteurs de ressources.
- WdfIoResourceListGetDescriptor, pour obtenir l’accès à un descripteur de ressources.
- WdfIoResourceListRemove et WdfIoResourceListRemoveByDescriptor, pour supprimer un descripteur de ressources.
À mesure que la liste remonte la pile des pilotes, l’infrastructure appelle chaque fonction et la fonction de rappel EvtDeviceFilterAddResourceRequirements du pilote de filtre, en passant la liste de la configuration matérielle requise en tant qu’argument d’entrée. Cette fonction de rappel peut ajouter des ressources matérielles supplémentaires dont le pilote de fonction a besoin pour rendre l’appareil opérationnel.
Pour ajouter des éléments à la liste matérielle requise, un pilote peut effectuer les opérations suivantes :
- Appelez les méthodes suivantes pour modifier les configurations logiques dans la liste des ressources requises :
- WdfIoResourceRequirementsListGetCount, pour obtenir le nombre de configurations logiques.
- WdfIoResourceRequirementsListGetIoResList, pour obtenir l’accès à une configuration logique.
- WdfIoResourceListCreate, pour créer une configuration logique.
- WdfIoResourceRequirementsListAppendIoResList ou WdfIoResourceRequirementsListInsertIoResList, pour ajouter une nouvelle configuration logique.
- Appelez les méthodes suivantes pour modifier les descripteurs de ressources dans une configuration logique :
- WdfIoResourceListGetCount, pour obtenir le nombre de descripteurs de ressources.
- WdfIoResourceListGetDescriptor, pour obtenir l’accès à un descripteur de ressources.
- WdfIoResourceListAppendDescriptor ou WdfIoResourceListInsertDescriptor, pour ajouter un descripteur de ressources.