Comment Windows catégorise-t-il les périphériques dans «Device Manager»?

Comment Windows détermine-t-il la catégorisation du périphérique dans «Device Manager»?

Par exemple, le Gestionnaire de périphériques répertorie des catégories telles que «Appareils d'imagerie», «Claviers», «Contrôleurs de sons, de vidéos et de jeux», etc. – comment Windows «sait-il» mettre un périphérique dans l'une de ces catégories?

Comment Windows décide-t-il quel périphérique est, et ensuite, le dépose-t-il dans une catégorie?

Pour référence, je comprends que Windows utilise le matériel et les identifiants du fournisseur pour «savoir» quel est un périphérique et que le nom visuel d'un périphérique provient du fichier INF initial. Mais d'après ce que je comprends, les fichiers INF ne définissent pas la catégorie ou le type de périphérique, donc pourquoi je me demande comment Windows fait la distinction.

    C'est essentiellement la responsabilité du conducteur de l'appareil. Windows représente les périphériques par objets de périphérique . Chaque objet de périphérique a un type de périphérique , qui est stocké dans le membre DeviceType de sa structure DEVICE_OBJECT. Le type de périphérique représente le type de matériel sous-jacent pour le pilote. Consultez la page source ci-dessous ainsi que la documentation MSDN connexe concernant les pilotes du noyau et du mode utilisateur, l'architecture du modèle de pilote Windows (WDM), etc.

    La source

    Votre compréhension est incorrecte: les fichiers INF définissent la catégorie dans laquelle un périphérique entrera dans le Gestionnaire de périphériques. Windows calcule les périphériques en fonction des entrées Class et ClassGuid dans le fichier INF utilisé pour installer le périphérique.

    Par exemple, accédez au Gestionnaire de périphériques -> Claviers -> Dispositif de clavier HID (supposé) -> cliquez avec le bouton droit de la souris -> Propriétés -> onglet Détails -> menu déroulant de propriété -> guide de classe de périphérique. Vous devriez voir {4d36e96b-e325-11ce-bfc1-08002be10318} pour le GUID de classe de périphérique. Cela correspond au GUID pour Keyboard dans le lien MSDN "Classes de configuration de périphérique définies par le système disponibles pour les fournisseurs" http://msdn.microsoft.com/en-us/library/ff553426%28v=vs.85%29.aspx

    Vous pouvez même créer vos propres catégories de gestionnaire de périphériques. "Création d'une nouvelle classe de configuration de périphérique" http://msdn.microsoft.com/en-us/library/ff540189%28VS.85%29.aspx Mais cela est généralement mal vu, et vous devez utiliser les GUID de classe existants, le cas échéant. Par exemple, si vous choisissez d'utiliser un GUID de classe différent pour un clavier, (je pense), le système d'exploitation ne reconnaitrait pas les touches qui ont été pressées, même si le système d'exploitation reconnaît le périphérique lui-même (c.-à-d. Énuméré, il envoie des données, mais le Les données n'entrent pas dans les tampons du clavier du système)