Énumération des interfaces de périphérique installées

Vous ne devez pas énumérer les interfaces de périphérique dans un système en accédant directement aux clés de Registre. Comme avec n’importe quelle clé de Registre, l’emplacement, le nom ou le format de la clé peuvent changer entre différentes versions de Windows.

Utilisez les instructions suivantes pour énumérer en toute sécurité les interfaces d’appareil.

Les applications en mode utilisateur doivent suivre les étapes suivantes :

  • Utilisation des fonctions du gestionnaire de configuration :

    Utilisez CM_Get_Device_Interface_List pour récupérer une liste d’interfaces d’appareil dans InterfaceClassGuid spécifié. Vous pouvez éventuellement restreindre la liste aux interfaces d’appareil uniquement exposées par un appareil particulier en définissant le paramètre pDeviceID sur un identificateur d’instance d’appareil spécifique.

    Pour inclure uniquement les interfaces d’appareil présentes (activées) dans un système, définissez l’indicateur CM_GET_DEVICE_INTERFACE_LIST_PRESENT dans le paramètre ulFlags .

  • Utilisation des fonctions SetupApi :

    1. Utilisez SetupDiGetClassDevs ou SetupDiGetClassDevsEx avec l’indicateur de DIGCF_DEVICEINTERFACE défini dans le paramètre Flags pour récupérer les interfaces d’appareil pour la classe d’interface d’appareil spécifiée. Vous pouvez éventuellement restreindre la liste aux interfaces d’appareil uniquement exposées par un appareil particulier en définissant le paramètre Enumerator sur un identificateur d’instance d’appareil spécifique.

      Pour inclure uniquement les interfaces d’appareil présentes (activées) dans un système, définissez l’indicateur DIGCF_PRESENT dans le paramètre Flags.

    2. Utilisez SetupDiEnumDeviceInterfaces pour énumérer les interfaces retournées par les appels ci-dessus.

Les pilotes en mode noyau doivent utiliser IoGetDeviceInterfaces pour récupérer une liste d’interfaces d’appareil dans InterfaceClassGuid spécifié. Vous pouvez éventuellement restreindre la liste aux interfaces d’appareil uniquement exposées par un appareil particulier en définissant le paramètre PhysicalDeviceObject .