Enumeração de interfaces de dispositivo instaladas

Não pode enumerar as interfaces dos dispositivos num sistema acedendo diretamente às chaves do registo. Tal como em qualquer chave de registo, a localização, o nome ou o formato da chave podem mudar entre diferentes versões do Windows.

Utilize as seguintes orientações para enumerar as interfaces dos dispositivos em segurança.

As aplicações em modo utilizador devem seguir estes passos:

  • Utilizar as funções do gestor de configuração:

    Utilize CM_Get_Device_Interface_List para obter uma lista de interfaces de dispositivo no InterfaceClassGuid especificado. Pode, opcionalmente, restringir a lista apenas a interfaces de dispositivo expostas por um determinado dispositivo, definindo o parâmetro pDeviceID para um identificador de instância específico do dispositivo.

    Para incluir apenas as interfaces de dispositivo presentes (ativadas) num sistema, defina a flag CM_GET_DEVICE_INTERFACE_LIST_PRESENT no parâmetro ulFlags .

  • Utilizar as funções SetupApi:

    1. Use SetupDiGetClassDevs ou SetupDiGetClassDevsEx com a flag DIGCF_DEVICEINTERFACE definida no parâmetro Flags para recuperar as interfaces de dispositivo para a classe de interface de dispositivo especificada. Pode, opcionalmente, restringir a lista apenas a interfaces de dispositivo expostas por um determinado dispositivo, definindo o parâmetro Enumerator para um identificador específico de instância de dispositivo.

      Para incluir apenas interfaces de dispositivo que estejam presentes (ativadas) num sistema, defina a flag de DIGCF_PRESENT no parâmetro Flags .

    2. Utilize SetupDiEnumDeviceInterfaces para enumerar interfaces devolvidas pelas chamadas acima.

Os drivers em modo kernel devem usar o IoGetDeviceInterfaces para recuperar uma lista de interfaces de dispositivo no InterfaceClassGuid especificado. Pode, opcionalmente, restringir a lista apenas a interfaces de dispositivo expostas por um determinado dispositivo, definindo o parâmetro PhysicalDeviceObject .