Recuperar relações de dispositivos

Em Windows Vista e versões posteriores do Windows, o modelo de propriedade do dispositivo unificado inclui propriedades de relações de dispositivo. O modelo de propriedade do dispositivo unificado usa chaves de propriedade para representar essas propriedades. A lista de relações representadas no modelo de propriedade do dispositivo unificado são:

Windows Server 2003, Windows XP e Windows 2000 não dão suporte às chaves de propriedade do modelo de propriedade unificada. No entanto, você pode recuperar as informações correspondentes chamando funções do gerenciador de configuração de Plug and Play (PnP). Para manter a compatibilidade com versões anteriores do Windows, o Windows Vista e versões posteriores também oferecem suporte à chamada de funções do gerenciador de configuração PnP para recuperar propriedades de relação entre dispositivos. No entanto, você deve usar as chaves de propriedade do modelo de propriedade do dispositivo unificado para acessar as propriedades de relação do dispositivo. Para obter informações sobre como usar chaves de propriedade para acessar as propriedades do driver de dispositivo, consulte Acessando as propriedades da instância do dispositivo (Windows Vista e posterior).

Para obter informações sobre como acessar as propriedades de relações do dispositivo no Windows Server 2003, Windows XP e Windows 2000, consulte os seguintes tópicos:

Recuperando relações de ejeção, relações de remoção e relações de poder e relações de barramento

Recuperando o pai de uma instância de dispositivo

Recuperando os filhos de uma instância de dispositivo

Recuperando os irmãos de uma instância de dispositivo

Recuperando relações de ejeção, relações de remoção e relações de poder e relações de barramento

Para recuperar informações de relações de dispositivo no Windows Server 2003, Windows XP e Windows 2000, chame CM_Get_Device_ID_List e forneça os seguintes valores de parâmetro:

  • Defina pszFilter como um ponteiro para uma cadeia de caracteres terminada por NULL que especifica o identificador da instância do dispositivo para o qual recuperar informações de relações.

  • Defina o Buffer como um ponteiro para um buffer que recebe uma lista de identificadores de instância de dispositivo terminados em NULL. A lista é encerrada por um caractere NULL adicional. Você pode obter o tamanho do buffer necessário chamando a função CM_Get_Device_ID_List_Size .

  • Defina BufferLen com o tamanho, em caracteres, do buffer de Buffer.

  • Defina ulFlags como um dos seguintes sinalizadores para recuperar as informações de relações correspondentes:

    • CM_GETIDLIST_FILTER_EJECTIONRELATIONS

      O sinalizador CM_GETIDLIST_FILTER_EJECTIONRELATIONS recupera as relações de ejeção, que são as mesmas informações fornecidas pela propriedade do dispositivo DEVPKEY_Device_EjectionRelations em versões Windows Vista e posteriores.

    • CM_GETIDLIST_FILTER_REMOVALRELATIONS

      O sinalizador CM_GETIDLIST_FILTER_REMOVALRELATIONS recupera as relações de remoção, que são as mesmas informações fornecidas pela propriedade do dispositivo DEVPKEY_Device_RemovalRelations em versões Windows Vista e posteriores.

    • CM_GETIDLIST_FILTER_POWERRELATIONS

      O sinalizador CM_GETIDLIST_FILTER_POWERRELATIONS recupera as PowerRelations, que são as mesmas informações fornecidas pela propriedade do dispositivo DEVPKEY_Device_PowerRelations no Windows Vista e em versões posteriores.

    • CM_GETIDLIST_FILTER_BUSRELATIONS

      O sinalizador CM_GETIDLIST_FILTER_BUSRELATIONS recupera as relações de barramento, que são as mesmas informações fornecidas pela propriedade do dispositivo DEVPKEY_Device_BusRelations em versões Windows Vista e posteriores.

Se a chamada para CM_Get_Device_ID_List for bem-sucedida, CM_Get_Device_ID_List recuperará as informações de relações solicitadas e retornará CR_SUCCESS. Caso contrário, CM_Get_Device_ID_List retornará um dos códigos de erro com o prefixo "CR_" definido no Cfgmgr32.h.

Recuperando o pai de uma instância de dispositivo

Para recuperar o identificador da instância do dispositivo de um dispositivo pai no Windows Server 2003, Windows XP e Windows 2000, siga estas etapas:

  1. Chame a função CM_Get_Parent para recuperar um identificador de instância de dispositivo para o dispositivo pai de uma instância de dispositivo.

  2. Chame CM_Get_Device_ID para recuperar o identificador da instância do dispositivo associado ao manipulador da instância do dispositivo do dispositivo pai que foi recuperado pela chamada anterior para CM_Get_Parent.

Essas informações recuperadas usando esse procedimento são as mesmas representadas pela propriedade DEVPKEY_Device_Parent no modelo de propriedade do dispositivo unificado de Windows Vista e versões posteriores.

Obtendo os filhos da instância do dispositivo

Para recuperar os identificadores de instância do dispositivo dos dispositivos filho de uma instância de dispositivo no Windows Server 2003, Windows XP e Windows 2000, siga estas etapas:

  1. Chame a função CM_Get_Child para recuperar um identificador de instância de dispositivo para o primeiro dispositivo filho associado a uma instância de dispositivo.

  2. Chame CM_Get_Sibling quantas vezes for necessário enumerar todos os dispositivos irmãos do primeiro dispositivo filho que foi recuperado pela chamada para CM_Get_Child.

  3. Chame CM_Get_Device_ID para recuperar os identificadores de instância do dispositivo associados aos manipuladores de instância do dispositivo que foram retornados pelas chamadas para CM_Get_Child e CM_Get_Sibling.

Essas informações recuperadas usando esse procedimento são as mesmas representadas pela propriedade DEVPKEY_Device_Children no modelo de propriedade do dispositivo unificado de Windows Vista e versões posteriores.

Recuperando os irmãos de uma instância de dispositivo

Para recuperar os identificadores de instância do dispositivo dos dispositivos irmãos da instância de dispositivo Abc no Windows Server 2003, Windows XP e Windows 2000, siga estas etapas:

  1. Chame a função CM_Get_Parent para recuperar um identificador de instância do dispositivo para o dispositivo pai da instância do dispositivo Abc.

  2. Chame a função CM_Get_Child para recuperar um identificador de instância de dispositivo para o primeiro dispositivo filho do dispositivo pai da instância do dispositivo Abc.

  3. Chame CM_Get_Sibling quantas vezes forem necessárias para enumerar todos os dispositivos irmãos do primeiro dispositivo filho do dispositivo pai. Essa enumeração também retornará um identificador para a instância do dispositivo Abc.

  4. Chame CM_Get_Device_ID para recuperar os identificadores de instância do dispositivo associados aos handles de instância do dispositivo que foram retornados pelas chamadas anteriores para CM_Get_Sibling. Remova o handle para a instância do dispositivo Abc da lista de dispositivos irmãos do primeiro dispositivo filho do dispositivo pai.

As informações recuperadas usando esse procedimento são as mesmas representadas pela propriedade DEVPKEY_Device_Siblings no modelo de propriedade do dispositivo unificado de Windows Vista e versões posteriores. Se uma chamada de função CM_Xxx listada nesta seção for bem-sucedida, a função CM_Xxx recuperará as informações solicitadas e retornará CR_SUCCESS. Caso contrário, a função CM_Xxx retornará um dos códigos de erro com o prefixo "CR_" definido no Cfgmgr32.h.