Enumerando las interfaces de dispositivo instaladas

No se deben enumerar las interfaces de dispositivo en un sistema accediendo directamente a las claves del Registro. Al igual que con cualquier clave del Registro, la ubicación, el nombre o el formato de la clave pueden cambiar entre diferentes versiones de Windows.

Utilice las instrucciones siguientes para enumerar interfaces de dispositivo de forma segura.

Las aplicaciones en modo de usuario deben seguir estos pasos:

  • Uso de las funciones de Configuration Manager:

    Use CM_Get_Device_Interface_List para recuperar una lista de interfaces de dispositivo en la InterfaceClassGuid especificada. Opcionalmente, puede restringir la lista solo a interfaces de dispositivo expuestas por un dispositivo determinado estableciendo el parámetro pDeviceID en un identificador de instancia de dispositivo específico.

    Para incluir solo las interfaces de dispositivo presentes (habilitadas) en un sistema, establezca el indicador CM_GET_DEVICE_INTERFACE_LIST_PRESENT en el parámetro ulFlags.

  • Uso de las funciones de SetupApi:

    1. Use SetupDiGetClassDevs o SetupDiGetClassDevsEx con la marca DIGCF_DEVICEINTERFACE establecida en el parámetro Flags para recuperar las interfaces de dispositivo de la clase de interfaz de dispositivo especificada. Opcionalmente, puede restringir la lista solo a interfaces de dispositivo expuestas por un dispositivo determinado estableciendo el parámetro Enumerator en un identificador de instancia de dispositivo específico.

      Para incluir solo interfaces de dispositivo presentes (habilitadas) en un sistema, establezca la marca DIGCF_PRESENT en el parámetro Flags.

    2. Utilice SetupDiEnumDeviceInterfaces para enumerar las interfaces devueltas por las llamadas anteriores.

Los controladores en modo kernel deben usar IoGetDeviceInterfaces para recuperar una lista de interfaces de dispositivo para la InterfaceClassGuid especificada. Opcionalmente, puede restringir la lista solo a interfaces de dispositivo expuestas por un dispositivo determinado estableciendo el parámetro PhysicalDeviceObject .