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.
Un ID matériel est une chaîne d’identification définie par le fournisseur que Windows utilise pour faire correspondre un appareil à un package de pilotes. Un ID matériel identifie un appareil. Il indique que n’importe quel paquet de pilotes qui déclare qu'il est capable de fonctionner avec un appareil ayant cet ID pour un certain niveau de fonctionnalité.
Dans la plupart des cas, un appareil a plusieurs ID matériels. En règle générale, une liste d’identifiants matériels est triée de la plus à la moins appropriée pour un appareil. Par exemple, la liste des ID matériels conceptuels pour un appareil peut ressembler à ceci :
<Product X made by company Y with firmware revision Z>
<Product X made by company Y that is a device of type W>
Lorsque les identifiants matériels réels représentent ces concepts en utilisant des chaînes qui suivent les exigences de format d'un identifiant matériel.
Créer un ID matériel pour un appareil
Les ID matériels sont signalés au Gestionnaire Plug-and-Play (PnP) par l’énumérateur d’un appareil, autrement dit, son pilote de bus. En règle générale, lorsque l’auteur d’un pilote de bus doit créer un ID matériel pour un appareil qu’il signale à PnP, il utilise l’un des formats génériques suivants :
<enumerator>\<enumerator-specific-device-ID>
Ce format est le plus courant pour les appareils PnP individuels signalés au gestionnaire Plug-and-Play par un seul énumérateur.
\*<generic-device-ID>
L’astérisque indique que plusieurs énumérateurs prennent en charge l’appareil, tel que ISAPNP et le BIOS.
<device-class-specific-ID>
Pour plus d’informations, consultez Identificateurs génériques.
Une classe d’appareil existante avec sa propre convention d’affectation de noms établie peut utiliser un format personnalisé. Pour plus d’informations sur leurs formats d’ID matériel, consultez la spécification matérielle de ces bus.
Le nombre de caractères d’un ID matériel, à l’exception d’un terminateur NULL, doit être inférieur à MAX_DEVICE_ID_LEN. Cette contrainte s’applique à la somme des longueurs de tous les champs ainsi qu'à tout \\ séparateur de champ dans un ID matériel. Pour plus d’informations, consultez la section Opération de IRP_MN_QUERY_ID.
ID matériel pour les appareils énumérés à la racine
Les périphériques énumérés à la racine sont spéciaux car ils peuvent être créés via des API où un ID matériel peut être fourni. Les appareils racine énumérés avec des ID matériels qui partagent des espaces de noms génériques, tels que ROOT\SYSTEM, risquent de créer des conflits. Le résultat est une icône d’erreur jaune en forme de point d'exclamation dans le Gestionnaire de périphériques lors de la mise à jour de Windows.
Vous pouvez prévenir cette erreur en utilisant un espace de noms unique pour chaque pilote qui a un périphérique racine énuméré. Pour un périphérique USB ou système, au lieu d’utiliser ROOT\USB ou ROOT\SYSTEM, utilisez ROOT\[COMPANYNAME]\[DEVICENAME]. Ensuite, avant d’installer, vérifiez si le devnode est déjà présent.
Obtenir la liste des ID matériels d’un appareil
Pour trouver la liste des ID matériels d’un appareil, procédez comme suit :
- Dans la recherche Windows, entrez et sélectionnez Gestionnaire d’appareils.
- Dans le Gestionnaire de périphériques, recherchez l’appareil dans l’arborescence.
- Sélectionnez l’appareil avec le bouton droit, puis sélectionnez Propriétés.
- Sélectionnez l’onglet Détails.
- Pour la propriété, sélectionnez ID matériel ou ID compatible.
Vous pouvez également obtenir la liste des ID matériels par programmation en récupérant la propriété DEVPKEY_Device_HardwareIds sur un appareil. Par exemple, cette propriété peut être récupérée avec des API telles que IoGetDevicePropertyData, SetupDiGetDeviceProperty ou CM_Get_DevNode_Property.
La liste des ID matériels que cette routine récupère est une valeur REG_MULTI_SZ . Le nombre maximal de caractères d’une liste matérielle, y compris un terminateur NULL après chaque ID matériel et un terminateur NULL final, est REGSTR_VAL_MAX_HCID_LEN. Le nombre maximal d’ID possibles dans une liste d’ID matériels est de 64.
Exemples d’identifiants matériels
Voici un exemple d’identificateur générique pour un appareil PnP :
root\*PNP0F08
Voici un exemple d’identificateur pour un appareil PCI :
PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02