Função SetupDiGetClassPropertyKeysExW (setupapi.h)

A função SetupDiGetClassPropertyKeysEx recupera uma matriz das chaves de propriedade do dispositivo que representam as propriedades do dispositivo definidas para uma classe de configuração de dispositivo ou uma classe de interface do dispositivo em um computador local ou remoto.

Sintaxe

WINSETUPAPI BOOL SetupDiGetClassPropertyKeysExW(
  [in]            const GUID *ClassGuid,
  [out, optional] DEVPROPKEY *PropertyKeyArray,
  [in]            DWORD      PropertyKeyCount,
  [out, optional] PDWORD     RequiredPropertyKeyCount,
  [in]            DWORD      Flags,
  [in, optional]  PCWSTR     MachineName,
                  PVOID      Reserved
);

Parâmetros

[in] ClassGuid

Um ponteiro para um GUID que representa uma classe de configuração de dispositivo ou uma classe de interface do dispositivo. SetupDiGetClassPropertyKeysEx recupera uma matriz das chaves de propriedade do dispositivo que representam as propriedades do dispositivo definidas para a classe especificada. Para obter informações sobre como especificar o tipo de classe, consulte o parâmetro Flags .

[out, optional] PropertyKeyArray

Um ponteiro para um buffer que recebe uma matriz de valores do tipo DEVPROPKEY, em que cada valor é uma chave de propriedade do dispositivo que representa uma propriedade de dispositivo definida para a classe de configuração do dispositivo. O ponteiro é opcional e pode ser NULL. Para obter mais informações, consulte a seção Comentários mais adiante neste tópico.

[in] PropertyKeyCount

O tamanho, em valores de tipo DEVPROPKEY, do buffer PropertyKeyArray . Se PropertyKeyArray estiver definido como NULL, PropertyKeyCount deverá ser definido como zero.

[out, optional] RequiredPropertyKeyCount

Um ponteiro para uma variável do tipo DWORD que recebe o número de chaves de propriedade solicitadas. O ponteiro é opcional e pode ser definido como NULL.

[in] Flags

Um dos valores a seguir, que especifica se as chaves de propriedade de classe devem ser recuperadas para uma classe de configuração de dispositivo ou para uma classe de interface do dispositivo.

DICLASSPROP_INSTALLER

ClassGuid especifica uma classe de configuração de dispositivo. Esse sinalizador não pode ser usado com DICLASSPROP_INTERFACE.

DICLASSPROP_INTERFACE

ClassGuid especifica uma classe de interface do dispositivo. Esse sinalizador não pode ser usado com DICLASSPROP_INSTALLER.

[in, optional] MachineName

Um ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome UNC, incluindo o prefixo "\" de um computador. O ponteiro pode ser NULL. Se o ponteiro for NULL, SetupDiGetClassPropertyKeysEx recuperará as informações solicitadas do computador local.

Cuidado

Não há suporte para o uso dessa função para acessar computadores remotos, começando com Windows 8 e Windows Server 2012, pois essa funcionalidade foi removida.

Reserved

Esse parâmetro deve ser definido como NULL.

Retornar valor

SetupDiGetClassPropertyKeysEx retornará TRUE se for bem-sucedido. Caso contrário, ele retornará FALSE e o erro registrado poderá ser recuperado chamando GetLastError.

A tabela a seguir inclui alguns dos códigos de erro mais comuns que essa função pode registrar.

Código de retorno Descrição
ERROR_INVALID_FLAGS
O valor de Flags não é válido.
ERROR_INVALID_CLASS
Se o sinalizador DICLASSPROP_INSTALLER for especificado, esse código de erro indicará que a classe de instalação do dispositivo especificada por ClassGuid não existe.
ERROR_INVALID_REFERENCE_STRING
A cadeia de caracteres de referência para a interface do dispositivo especificada por ClassGuild não é válida. Esse erro pode ser retornado quando o sinalizador DICLASSPROP_INTERFACE é especificado.
ERROR_INVALID_DATA
Um valor de dados não especificado não é válido. Uma possibilidade é que o valor ClassGuid não seja válido.
ERROR_INVALID_PARAMETER
Um parâmetro não especificado não é válido.
ERROR_INVALID_USER_BUFFER
Um buffer de usuário não é válido. Uma possibilidade é que PropertyKeyArray seja NULL e PropertKeyCount não seja zero.
ERROR_INVALID_MACHINENAME
O nome do computador especificado por MachineName não é válido.
ERROR_NO_SUCH_INTERFACE_CLASS
Se o sinalizador DICLASSPROP_INTERFACE for especificado, esse código de erro indicará que a classe de interface do dispositivo especificada por ClassGuid não existe.
ERROR_INSUFFICENT_BUFFER
O buffer PropertyKeyArray não é grande o suficiente para manter todas as chaves de propriedade ou um buffer de dados interno que foi passado para uma chamada do sistema era muito pequeno.
ERROR_NOT_ENOUGH_MEMORY
Não havia memória do sistema suficiente disponível para concluir a operação.
ERROR_ACCESS_DENIED
O chamador não tem privilégios de Administrador.

Comentários

SetupDiGetClassPropertyKeysEx faz parte do modelo de propriedade do dispositivo unificado.

Um chamador de SetupDiGetClassPropertyKeysEx deve ser um membro do grupo Administradores para recuperar chaves de propriedade do dispositivo para uma classe de dispositivo.

Se o buffer PropertyKeyArray não for grande o suficiente para manter todas as chaves de propriedade solicitadas, SetupDiGetClassPropertyKeysEx não recuperará nenhuma chave de propriedade e retornará ERROR_INSUFFICIENT_BUFFER. Se o chamador forneceu um ponteiro RequiredPropertyKeyCount, SetupDiGetClassPropertyKeysEx define o valor de *RequiredPropertyKeyCount como o tamanho necessário, em valores do tipo DEVPROPKEY, do buffer PropertyKeyArray.

Para recuperar uma propriedade de classe de dispositivo em um computador remoto, chame SetupDiGetClassPropertyEx e, para definir uma propriedade de classe de dispositivo em um computador remoto, chame SetupDiSetClassPropertyEx.

Para recuperar as chaves de propriedade de uma classe de configuração de dispositivo ou classe de interface de dispositivo em um computador local, chame SetupDiGetClassPropertyKeys.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores do Windows.
Plataforma de Destino DesktopPara universal, chame CM_Get_Class_Property_Keys_Ex
Cabeçalho setupapi.h (inclua Setupapi.h)
Biblioteca Setupapi.lib

Confira também

SetupDiGetClassPropertyEx

SetupDiGetClassPropertyKeys

SetupDiSetClassPropertyEx