Função SetupDiGetClassDevsW (setupapi.h)
A função SetupDiGetClassDevs retorna um identificador para um conjunto de informações do dispositivo que contém elementos de informações do dispositivo solicitados para um computador local.
Sintaxe
WINSETUPAPI HDEVINFO SetupDiGetClassDevsW(
[in, optional] const GUID *ClassGuid,
[in, optional] PCWSTR Enumerator,
[in, optional] HWND hwndParent,
[in] DWORD Flags
);
Parâmetros
[in, optional] ClassGuid
Um ponteiro para o GUID para uma classe de configuração de dispositivo ou uma classe de interface do dispositivo . Esse ponteiro é opcional e pode ser NULL. Para obter mais informações sobre como definir
[in, optional] Enumerator
Um ponteiro para uma cadeia de caracteres terminada em NULL que especifica:
- Um identificador (ID) de um plug and play (PnP) enumerador. Essa ID pode ser o GUID (identificador global exclusivo) do valor ou o nome simbólico. Por exemplo, "PCI" pode ser usado para especificar o valor PnP PCI. Outros exemplos de nomes simbólicos para valores PnP incluem "USB", "PCMCIA" e "SCSI".
- Uma ID da instância do dispositivo de PnP. Ao especificar uma ID da instância do dispositivo PnP, DIGCF_DEVICEINTERFACE deve ser definido no parâmetro Flags.
Para obter mais informações sobre como definir o valor do Enumerador
[in, optional] hwndParent
Um identificador para a janela de nível superior a ser usado para uma interface do usuário associada à instalação de uma instância de dispositivo no conjunto de informações do dispositivo. Esse identificador é opcional e pode ser NULL.
[in] Flags
Uma variável do tipo DWORD que especifica opções de controle que filtram os elementos de informações do dispositivo que são adicionados ao conjunto de informações do dispositivo. Esse parâmetro pode ser um OR bit a bit de zero ou mais dos sinalizadores a seguir. Para obter mais informações sobre como combinar esses sinalizadores, consulte a seguinte seção Comentários.
DIGCF_ALLCLASSES
Retorne uma lista de dispositivos instalados para todas as classes de instalação do dispositivo ou todas as classes de interface do dispositivo.
DIGCF_DEVICEINTERFACE
Retorne dispositivos que dão suporte a interfaces de dispositivo para as classes de interface do dispositivo especificadas. Esse sinalizador deve ser definido no parâmetro sinalizadores
DIGCF_DEFAULT
Retorne apenas o dispositivo associado à interface do dispositivo padrão do sistema, se um estiver definido, para as classes de interface do dispositivo especificadas.
DIGCF_PRESENT
Retornar somente os dispositivos que estão atualmente presentes em um sistema.
DIGCF_PROFILE
Retornar somente dispositivos que fazem parte do perfil de hardware atual.
Valor de retorno
Se a operação for bem-sucedida, SetupDiGetClassDevs retornará um identificador para um conjunto de informações do dispositivo que contém todos os dispositivos instalados que corresponderam aos parâmetros fornecidos. Se a operação falhar, a função retornará INVALID_HANDLE_VALUE. Para obter informações de erro estendidas, chame GetLastError.
Observações
O chamador de SetupDiGetClassDevs deve excluir o conjunto de informações do dispositivo retornado quando ele não for mais necessário chamando SetupDiDestroyDeviceInfoList.
Chame SetupDiGetClassDevsEx para recuperar os dispositivos de uma classe em um computador remoto.
Opções de controle de classe de instalação do dispositivo
Use as seguintes opções de filtragem para controlar se SetupDiGetClassDevs retorna dispositivos para todas as classes de instalação do dispositivo ou apenas para uma classe de instalação de dispositivo especificada:-
Para retornar dispositivos para todas as classes de instalação do dispositivo, defina o sinalizador DIGCF_ALLCLASSES e defina o parâmetro ClassGuid
como NULL. - Para retornar dispositivos somente para uma classe de configuração de dispositivo específica, não defina DIGCF_ALLCLASSES e use ClassGuid para fornecer o GUID da classe de instalação do dispositivo.
- Para retornar apenas os dispositivos presentes no sistema, defina o sinalizador DIGCF_PRESENT.
- Para retornar apenas os dispositivos que fazem parte do perfil de hardware atual, defina o sinalizador DIGCF_PROFILE.
-
Para retornar dispositivos somente para umenumerador PnP
específico, use o parâmetro Enumerador para fornecer o GUID ou o nome simbólico do enumerador . Seenumerador estiverNULL, SetupDiGetClassDevs retornará dispositivos para todos os enumeradores PnP.
Opções de controle de classe de interface do dispositivo
Use as seguintes opções de filtragem para controlar se SetupDiGetClassDevs retorna dispositivos que dão suporte a qualquer classe de interface do dispositivo ou apenas dispositivos que dão suporte a uma classe de interface do dispositivo especificada:- Para retornar dispositivos que dão suporte a uma interface de dispositivo de qualquer classe, defina o sinalizador DIGCF_DEVICEINTERFACE, defina o sinalizador DIGCF_ALLCLASSES e defina ClassGuid como NULL. A função adiciona às informações do dispositivo um elemento de informações do dispositivo que representa esse dispositivo e, em seguida, adiciona ao elemento de informações do dispositivo uma lista de interface do dispositivo que contém todas as interfaces de dispositivo compatíveis com o dispositivo.
- Para retornar apenas dispositivos que dão suporte a uma interface de dispositivo de uma classe especificada, defina o sinalizador DIGCF_DEVICEINTERFACE e use o parâmetro ClassGuid para fornecer o GUID de classe da classe de interface do dispositivo. A função adiciona às informações do dispositivo um elemento de informações do dispositivo que representa esse dispositivo e adiciona uma interface de dispositivo da classe especificada à lista de interface do dispositivo para esse elemento de informações do dispositivo.
- Para retornar apenas o dispositivo que dá suporte à interface padrão do sistema, se um estiver definido, para uma classe de interface de dispositivo especificada, defina o sinalizador DIGCF_DEVICEINTERFACE, defina o sinalizador DIGCF_DEFAULT e use ClassGuid para fornecer o GUID de classe da classe de interface do dispositivo. A função adiciona às informações do dispositivo um elemento de informações do dispositivo que representa esse dispositivo e adiciona a interface padrão do sistema à lista de interface do dispositivo para esse elemento de informações do dispositivo.
- Para retornar um dispositivo que dê suporte a uma interface padrão do sistema para uma classe de interface de dispositivo não especificada, defina o sinalizador DIGCF_DEVICEINTERFACE, defina o sinalizador DIGCF_ALLCLASSES, defina o sinalizador DIGCF_DEFAULT e defina ClassGuid como NULL. A função adiciona às informações do dispositivo um elemento de informações do dispositivo que representa esse dispositivo e adiciona a interface padrão do sistema à lista de interface do dispositivo para esse elemento de informações do dispositivo.
- Para retornar apenas os dispositivos presentes no sistema, defina o sinalizador DIGCF_PRESENT.
- Para retornar apenas os dispositivos que fazem parte do perfil de hardware atual, defina o sinalizador DIGCF_PROFILE.
- Para retornar apenas um dispositivo específico, defina o sinalizador de DIGCF_DEVICEINTERFACE e use o parâmetro Enumerador para fornecer o ID da instância do dispositivo do dispositivo. Para incluir todos os dispositivos possíveis, defina de Enumerador para NULL.
Exemplos
Veja a seguir alguns exemplos de como usar a função
Exemplo 1: Criar uma lista de todos os dispositivos no sistema, incluindo dispositivos que não estão presentes no momento.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);
Exemplo 2: Criar uma lista de todos os dispositivos presentes no sistema.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
Exemplo 3: Criar uma lista de todos os dispositivos presentes no sistema que são do adaptador de rede classe de instalação do dispositivo.
Handle = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
Exemplo 4: Criar uma lista de todos os dispositivos presentes no sistema que habilitaram uma interface do volume de armazenamento classe de interface do dispositivo.
Handle = SetupDiGetClassDevs(&GUID_DEVINTERFACE_VOLUME, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
Exemplo 5: Criar uma lista de todos os dispositivos presentes no sistema, mas não pertencem a nenhum de classe de instalação de dispositivo conhecido (Windows Vista e versões posteriores do Windows).
DeviceInfoSet = SetupDiGetClassDevs(
NULL,
NULL,
NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
DeviceIndex = 0;
while (SetupDiEnumDeviceInfo(
DeviceInfoSet,
DeviceIndex,
&DeviceInfoData)) {
DeviceIndex++;
if (!SetupDiGetDeviceProperty(
DeviceInfoSet,
&DeviceInfoData,
&DEVPKEY_Device_Class,
&PropType,
(PBYTE)&DevGuid,
sizeof(GUID),
&Size,
0) || PropType != DEVPROP_TYPE_GUID) {
Error = GetLastError();
if (Error == ERROR_NOT_FOUND) {
\\
\\ This device has an unknown device setup class.
\\
}
}
}
if (DeviceInfoSet) {
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}
Nota
O cabeçalho setupapi.h define SetupDiGetClassDevs como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Microsoft Windows 2000 e versões posteriores do Windows. |
da Plataforma de Destino |
DesktopPara universal, chame CM_Get_Device_ID_ListFor universal, chame CM_Get_Device_Interface_List |
cabeçalho | setupapi.h (inclua SetupAPI.h) |
biblioteca | SetupAPI.lib |
de DLL |
SetupAPI.dll |
conjunto de API | ext-ms-win-setupapi-classinstallers-l1-1-0 (introduzido no Windows 8) |
Consulte também
conjunto de informações do dispositivo