Enumerando interfaces de dispositivo instaladas

Você não deve enumerar as interfaces de dispositivo em um sistema acessando diretamente as chaves do Registro. Assim como acontece com qualquer chave do Registro, o local, o nome ou o formato da chave pode mudar entre diferentes versões do Windows.

Use as diretrizes a seguir para enumerar com segurança as interfaces do dispositivo.

Os aplicativos no modo de usuário devem seguir estas etapas:

  • Usando funções do Configuration Manager :

    Use CM_Get_Device_Interface_List para recuperar uma lista de interfaces de dispositivo no InterfaceClassGuid especificado. Opcionalmente, você pode restringir a lista apenas a interfaces de dispositivo expostas por um dispositivo específico definindo o parâmetro pDeviceID como um identificador de instância de dispositivo específico.

    Para incluir apenas interfaces de dispositivo presentes (habilitadas) em um sistema, defina o sinalizador CM_GET_DEVICE_INTERFACE_LIST_PRESENT no parâmetro ulFlags .

  • Usando funções SetupApi :

    1. Use SetupDiGetClassDevs ou SetupDiGetClassDevsEx com o sinalizador DIGCF_DEVICEINTERFACE definido no parâmetro Flags para recuperar as interfaces do dispositivo para a classe de interface do dispositivo especificada. Opcionalmente, você pode restringir a lista apenas a interfaces de dispositivo expostas por um dispositivo específico definindo o parâmetro Enumerador como um identificador de instância de dispositivo específico.

      Para incluir apenas interfaces de dispositivo presentes (habilitadas) em um sistema, defina o sinalizador DIGCF_PRESENT no parâmetro Flags .

    2. Use SetupDiEnumDeviceInterfaces para enumerar interfaces retornadas pelas chamadas acima.

Os drivers no modo kernel devem usar IoGetDeviceInterfaces para recuperar uma lista de interfaces de dispositivo no InterfaceClassGuid especificado. Opcionalmente, você pode restringir a lista apenas a interfaces de dispositivo expostas por um dispositivo específico definindo o parâmetro PhysicalDeviceObject .