Question

Je suis curieux de savoir comment le gestionnaire de périphériques Windows obtient les ID de matériel pour un périphérique, même si aucun pilote de périphérique n'a encore été chargé pour le périphérique. Quelqu'un sait-il comment Windows se passe à ce sujet?

Sur une note connexe, je suis intéressé par la prise en charge de la localisation linguistique du logiciel que nous écrivons; Est-il possible pour un périphérique et / ou un pilote de rapporter son nom convivial et sa description de manière localisée? Existe-t-il déjà une pratique commune à cet égard?

Merci de votre temps.

Était-ce utile?

La solution

Tout d'abord, pour comprendre l'ordre de chargement des pilotes, il est recommandé de basculer le Gestionnaire de périphériques dans Afficher | Périphériques par connexion .

Comme vous pouvez le constater, les périphériques sont situés sous leur pilote de bus. Pour les périphériques PCI, ce sera & "; Le bus PCI &"; Pour les périphériques USB, ce serait leur concentrateur USB. Chaque pilote de bus a sa propre idée sur le format des chaînes d’identifiant:

  • ID d'instance de périphérique
  • ID de matériel
  • ID compatibles
  • emplacement, etc.

Il les renvoie en réponse à IRP_MN_QUERY_ID (BusQueryInstanceID, BusQueryHardwareIDs, BusQueryCompatibleIDs) et IRP_MN_QUERY_DEVICE_TEXT (DeviceTextDescription, DeviceTextLocationInformation etc.)

.

Bien sûr, étant donné que le pilote de bus a énuméré les périphériques (c.-à-d. créé les périphériques enfants que vous voyez) en premier lieu (via l'interface standard appropriée pour le bus, par exemple "Get Device / String Descriptor" sur USB), il connaît leur ID de fournisseur, ID de produit, etc.

Il n'est pas nécessaire de charger le pilote du périphérique à ce stade. En fait, il ne peut pas être chargé. Les identifiants de périphériques sont précisément ce qui indique au système PnP quel pilote correspond au périphérique.

En ce qui concerne la localisation:

Contrairement à Parameters.QueryDeviceText.LocaleId, qui fournit des chaînes opaques destinées à la correspondance de périphériques, les informations <=> étaient en effet destinées à être localisées. À cette fin, vous recevez l'ID de paramètres régionaux (LCID) demandé dans les données d'entrée (<=>).

[Comme Alphaneo l’a noté, un pilote de concentrateur USB peut transmettre ce LCID au périphérique USB (dans une requête Get String Descriptor), en espérant que le périphérique USB lui-même contient des chaînes localisées.]

Autres conseils

Le processus de niveau supérieur s'appelle une énumération. La plupart des bus de périphériques modernes prennent en charge un mécanisme permettant au système d'exploitation d'interroger le bus et de déterminer les périphériques connectés au bus.

La famille de bus PCI prend en charge l’énumération. Le bus PCI dispose d'un espace de énumération spécial. C’est là que & Quot; Plug-and-Play & Quot; Les identifiants viennent de.

L'identifiant de périphérique identifie de manière unique un périphérique sur le bus et permet au système d'exploitation de trouver le pilote approprié pour ce périphérique.

D'autres bus, notamment USB et FireWire, ont des stratégies de recensement

.

ID de périphérique, est une combinaison d'informations fournies par le périphérique. Par exemple, pour un périphérique USB, la chaîne est basée sur le VID et le PID (ID fournisseur et ID produit). Maintenant, cela ne peut pas arriver si aucun pilote n'est chargé. Au moins un pilote, un pilote de bus doit être chargé pour que le système d'exploitation obtienne l'ID de périphérique.

Maintenant, pour le support de la langue, je suppose que pour le pilote WDM, il existe un QUERY_LANG ou quelque chose, je ne me souviens pas bien, sinon certains périphériques comme l'USB prennent en charge l'ID de langue. Cet ID de langue détermine la langue de la chaîne de descripteur de produit.

Veuillez noter qu'il existe une différence entre l'identifiant matériel / numéro de série et le véritable identifiant matériel unique. Peut-être que cela l'expliquera mieux: http://www.soft.tahionic.com /download-hdd_id/hardware%20ID%20programmer%27s%20DLL.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top