Enumerar dispositivos instalados
Você não deve enumerar dispositivos usando chaves do Registro diretamente. As chaves do Registro não contêm as informações necessárias para enumerar dispositivos instalados no sistema. Essas informações, como se o dispositivo está realmente presente ou se é um dispositivo fantasma (um que não está conectado), são mantidas pelo gerenciador de Plug and Play (PnP). O gerenciador PnP também executa filtragem adicional de informações do Registro.
Para enumerar dispositivos instalados com segurança, siga estas etapas.
Usando funções do Configuration Manager :
Use CM_Get_Device_ID_List para recuperar uma lista de cadeias de caracteres de ID (identificador de instância de dispositivo) exclusivas. Para recuperar informações somente para dispositivos presentes no sistema, defina CM_GETIDLIST_FILTER_PRESENT no parâmetro ulFlags .
Você pode usar a ID de instância de dispositivo exclusiva com CM_Locate_DevNode para recuperar um DEVINST que representa o dispositivo a ser usado com outras APIs do gerenciador de configurações.
Usando funções SetupAPI :
Use SetupDiGetClassDevs para recuperar informações para um conjunto de dispositivos. Para recuperar informações somente para dispositivos presentes no sistema, defina DIGCF_PRESENT no parâmetro Flags .
Use SetupDiEnumDeviceInfo para enumerar os dispositivos no conjunto.
Você pode usar o SP_DEVINFO_DATA retornado por SetupDiEnumDeviceInfo com outras APIs SetupApi ou usar SetupDiGetDeviceInstanceId para recuperar uma ID (identificador de instância de dispositivo) exclusivo para o dispositivo.