Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No modo de usuário, os dispositivos que pertencem a classes de configuração de dispositivo ou classes de interface de dispositivo são gerenciados usando elementos de informações de dispositivo e conjuntos de informações de dispositivo. Um conjunto de informações do dispositivo consiste em elementos de informações do dispositivo para todos os dispositivos que pertencem a alguma classe de configuração de dispositivo ou classe de interface de dispositivo.
Cada elemento de informações do dispositivo contém um identificador para o devnode do dispositivo e um ponteiro para uma lista vinculada de todas as interfaces de dispositivo associadas ao dispositivo descrito por esse elemento. Se um conjunto de informações de dispositivo descrever membros de uma classe de instalação, o elemento pode não apontar para nenhuma interface de dispositivo, uma vez que os membros da classe de configuração não estão necessariamente associados a uma interface.
O diagrama a seguir mostra a estrutura interna de um conjunto de informações do dispositivo.
Criando um conjunto de informações do dispositivo
Depois de criar um conjunto de informações do dispositivo com SetupDiCreateDeviceInfoList, os elementos de informações do dispositivo podem ser criados e adicionados à lista, um de cada vez, usando SetupDiCreateDeviceInfo. Como alternativa, SetupDiGetClassDevs pode ser chamado para criar um conjunto de informações de dispositivo composto por todos os dispositivos associados a uma classe de configuração de dispositivo especificada ou classe de interface de dispositivo.
Enumerando informações do dispositivo
Depois que um conjunto de informações de dispositivo é criado, os dispositivos e as interfaces de dispositivo que pertencem ao conjunto podem ser enumerados, mas operações diferentes são necessárias para cada tipo de enumeração. SetupDiEnumDeviceInfo enumera todos os dispositivos que pertencem ao conjunto de informações que atendem a determinados critérios. Cada chamada para SetupDiEnumDeviceInfo extrai uma estrutura de SP_DEVINFO_DATA que corresponde aproximadamente a um elemento de informações do dispositivo. SP_DEVINFO_DATA contém o GUID da classe à qual o dispositivo pertence e um identificador de instância de dispositivo que aponta para o devnode do dispositivo. A principal diferença entre uma estrutura SP_DEVINFO_DATA e um elemento de dispositivo completo é que SP_DEVINFO_DATA não contém a lista vinculada de interfaces associadas ao dispositivo. Portanto, SetupDiEnumDeviceInfo não pode ser usado para enumerar as interfaces no conjunto de informações do dispositivo.
Para enumerar as interfaces de dispositivo em um conjunto de informações de dispositivo, chame SetupDiEnumDeviceInterfaces. Essa rotina percorre todos os elementos de informações do dispositivo no conjunto de informações do dispositivo, extrai as interfaces na lista de interfaces de cada elemento e retorna uma interface com cada chamada. Se SetupDiEnumDeviceInterfaces for passado uma estrutura SP_DEVINFO_DATA como entrada em seu segundo parâmetro, ele restringirá a enumeração apenas às interfaces associadas ao dispositivo indicado por SP_DEVINFO_DATA.
SetupDiEnumDeviceInterfaces retorna uma estrutura SP_DEVICE_INTERFACE_DATA . SP_DEVICE_INTERFACE_DATA contém o GUID da classe de interface e outras informações sobre a interface, incluindo um campo reservado que tem informações codificadas que podem ser usadas para obter o nome da interface. Para obter o nome da interface, uma etapa adicional é necessária: SetupDiGetDeviceInterfaceDetail deve ser chamado. SetupDiGetDeviceInterfaceDetail retorna uma estrutura do tipo SP_DEVICE_INTERFACE_DETAIL_DATA que contém o caminho na árvore de objetos do sistema que define a interface.