Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les ressources matérielles sont les chemins de bus assignables et adressables qui permettent aux périphériques et aux processeurs système de communiquer entre eux. Les ressources matérielles incluent généralement des adresses de port d’E/S, des vecteurs d’interruption et des blocs d’adresses mémoire relatives au bus.
Avant que le système puisse communiquer avec une instance d’appareil, le gestionnaire PnP doit affecter des ressources matérielles à l’instance d’appareil en fonction des connaissances sur les ressources disponibles et celles que l’instance de l’appareil est capable d’utiliser. Les ressources sont affectées à chaque nœud d’appareil dans l’arborescence de l’appareil (en supposant que l’appareil représenté a besoin de ressources et que ces ressources sont disponibles). Le gestionnaire PnP effectue le suivi des ressources matérielles à l’aide de listes, qu’il associe aux nœuds d’appareil. Il utilise deux types de listes :
Liste des conditions requises pour les ressources
Les appareils sont généralement conçus pour fonctionner dans des plages d’affectations de ressources. Par exemple, un appareil peut nécessiter un seul vecteur d’interruption, mais il peut être en mesure d’utiliser une plage de vecteurs. Pour chaque instance d’appareil, le gestionnaire PnP gère une liste des exigences de ressources qui spécifie toutes les plages de ressources matérielles dans lesquelles l’appareil peut fonctionner. Le nom de la liste provient du fait que le gestionnaire PnP est requis pour choisir des ressources dans cette liste lors de leur affectation à l’appareil.
Le code en mode noyau spécifie les listes de ressources requises à l’aide de structures IO_RESOURCE_REQUIREMENTS_LIST (en tant qu’entrée aux routines système ou en réponse aux IRPs). Le code en mode utilisateur spécifie les listes de ressources requises à l’aide de structures du gestionnaire de configuration PnP comme entrée dans les fonctions du gestionnaire de configuration PnP.
Liste des ressources
Lorsque le gestionnaire PnP affecte des ressources à un appareil, il effectue le suivi de ces affectations en créant une liste de ressources affectées pour chaque instance d’appareil. Ces listes peuvent être appelées listes d’affectation de ressources, mais ce nom est généralement abrégé en listes de ressources. Le gestionnaire PnP peut modifier le contenu de la liste des ressources à mesure que les appareils sont ajoutés ou supprimés d’un système et des ressources sont ensuite réaffectés. (Les ressources peuvent également être affectées par un BIOS PnP. En outre, le logiciel d’installation, à l’aide de fichiers INF ou d’entrée utilisateur, peut forcer le gestionnaire PnP à affecter des ressources spécifiques à un appareil.)
Le code en mode noyau spécifie des listes de ressources à l’aide de structures CM_RESOURCE_LIST (en tant qu’entrée aux routines système ou en réponse aux IRPs). Le code en mode utilisateur spécifie des listes de ressources à l’aide de structures de gestionnaire de configuration PnP comme entrée dans les fonctions du gestionnaire de configuration PnP.
Le gestionnaire PnP stocke les listes de ressources requises et les listes de ressources dans le Registre, où ils peuvent être consultés à l’aide de Regedit.exe. Les pilotes peuvent accéder indirectement à ces listes via des routines Plug and Play et IRP mineurs Plug and Play. Les applications en mode utilisateur peuvent utiliser les fonctions du gestionnaire de configuration PnP. (Les pilotes et les applications ne doivent pas accéder directement à ces listes à l’aide de fonctions de Registre, car le format de stockage est susceptible de changer dans une version ultérieure.)
Configurations logiques
Les listes de ressources requises et les listes de ressources contiennent une ou plusieurs configurations logiques. Chaque configuration logique identifie une plage de ressources acceptables ou un ensemble de ressources spécifiques pour une instance d’appareil spécifique. En outre, chaque configuration logique d’une instance d’appareil appartient à l’un des types de configuration logique. Les types de configuration sont répertoriés ci-dessous. Plusieurs configurations logiques, de types identiques ou différents, peuvent être affectées à chaque instance d’appareil.
Types de configuration logique pour les listes de ressources requises
Configuration de base
Liste des besoins en ressources identifiant les plages de ressources fournies par un appareil Plug-and-Play. Un pilote doit retourner cette liste lorsqu’il reçoit le IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP. (La configuration de base d’un appareil non PnP peut être décrite dans un fichier INF. Dans ce cas, le logiciel d’installation de l’appareil lit le fichier INF et appelle les fonctions du gestionnaire de configuration PnP pour créer une liste de conditions requises.)
Configuration filtrée
Liste des exigences de ressources qui a été fournie à une pile de pilotes, éventuellement modifiée, puis retournée par la pile de pilotes, en réponse à la IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. Le gestionnaire PnP utilise la configuration filtrée résultante comme base de l’allocation de ressources.
Remplacer la configuration
Liste des besoins en ressources qui remplace les configurations de base. En règle générale, un programme d’installation d’appareil crée une configuration de remplacement si le fichier INF de l’appareil inclut une section INF DDInstall.LogConfigOverride. Une configuration de remplacement n’est pas supprimée si son appareil est physiquement supprimé du système.
Types de configuration logique pour les listes de ressources
Configuration du démarrage
Liste de ressources identifiant les ressources affectées à une instance d’appareil lorsque le système est démarré. (Pour les appareils PnP, il s’agit de la configuration fournie par le BIOS ; pour les appareils non PnP, ces ressources peuvent être sélectionnées par des jumpers sur la carte.) Un pilote doit retourner cette liste de ressources lorsqu’il reçoit l’IRP IRP_MN_QUERY_RESOURCES . (Une configuration de démarrage peut être partiellement vide si le BIOS ne peut pas déterminer toutes les ressources utilisées par un appareil.) Le gestionnaire PnP peut modifier cette liste si un appareil est supprimé ou redémarré. Pour les appareils non PnP, ce type de configuration peut être utilisé au lieu d’une configuration forcée, auquel cas il a une priorité de configuration inférieure à une configuration forcée équivalente. Une seule configuration de démarrage peut exister pour chaque instance d’appareil.
Configuration forcée
Liste de ressources identifiant les ressources qu’une instance d’appareil doit utiliser. Une configuration forcée empêche le gestionnaire PnP d’affecter d’autres ressources à l’instance de l’appareil. Un programme d’installation d’appareil peut créer une configuration forcée en fonction des informations contenues dans un INF ou reçues d’un utilisateur. Une configuration forcée n’est pas supprimée si son appareil est physiquement supprimé du système. Une seule configuration forcée peut exister pour chaque instance d’appareil.
Configuration allouée
Liste de ressources identifiant les ressources actuellement utilisées par une instance d’appareil. Une seule configuration allouée peut exister pour chaque instance d’appareil.
Les pilotes de périphérique sont chargés de déterminer la configuration de base, la configuration filtrée et la configuration de démarrage d’un appareil compatible PnP, et de retourner ces informations en réponse aux IRPs envoyés par le gestionnaire PnP. (Pour plus d’informations, consultez Ajout d’un appareil PnP à un système en cours d’exécution.) Le logiciel d’installation du pilote peut créer des configurations de remplacement, des configurations forcées et, pour les appareils non PnP, des configurations de démarrage. Le gestionnaire PnP gère la configuration allouée de chaque instance d’appareil.
Une priorité est affectée à chaque configuration lors de sa création. Si le gestionnaire PnP constate qu’une instance d’appareil a été affectée à plusieurs configurations logiques du même type, elle tente d’utiliser celle avec la priorité la plus élevée en premier. Si cette configuration entraîne des conflits de ressources, elle tente la configuration avec la priorité inférieure suivante. (Pour obtenir la liste des priorités de configuration, consultez CM_Add_Empty_Log_Conf.)