Compartilhar via


Coleções de link

Uma coleção de links como uma subcoleção aninhada em uma coleção de nível superior. Uma coleção de nível superior pode ter zero ou mais coleções de link.

HidP_GetLinkCollectionNodes retorna a matriz de coleção de link de uma coleção de nível superior que contém informações sobre as coleções de link de uma coleção de nível superior.

Uma matriz de coleção de links descreve todas as coleções de link contidas em uma coleção de nível superior. Cada coleção de links é representada por uma estrutura de HIDP_LINK_COLLECTION_NODE . Os nós de link da matriz são vinculados de uma maneira que identifica sua ordem sequencial e hierárquica em uma coleção de nível superior. O primeiro elemento de uma matriz de coleção de link representa uma coleção de nível superior e os membros restantes representam as coleções de link da coleção de nível superior.

Ao rastrear os nós na matriz de conexão de link, um aplicativo no modo de usuário ou o driver do modo kernel pode determinar a organização e o uso de todas as coleções de link em uma coleção de nível superior. Além disso, o aplicativo ou driver pode organizar controles por sua coleção de links. Isso é possível porque as matrizes de funcionalidade de botão e as matrizes de funcionalidade de valor de uma coleção de nível superior identificam a coleção de links que contém cada uso de HID descrito pelas matrizes de funcionalidade.

A figura a seguir mostra um exemplo de uma coleção de nível superior que contém quatro coleções de link.

Diagrama ilustrando uma coleção de nível superior que contém quatro coleções de links.

Conforme indicado na figura anterior, as coleções de links são vinculadas em uma ordem de cima para baixo e abcd (ordem da esquerda para a direita). A tabela a seguir indica, para cada coleção de link no exemplo, os links entre a coleção de nível superior e suas coleções de link.

Nó de Link Parent Children First Child Próximo Irmão
A Coleção de nível superior B, C B Nenhum
B Um D D C
C A Nenhum Nenhum Nenhum
D B Nenhum Nenhum Nenhum

Em uma matriz de coleção de link, as seguintes definições contêm:

  • Pai: o pai de uma coleção de link é a coleção imediatamente acima dela na hierarquia de coleções de cima para baixo. As coleções de link têm um pai. O membro Pai de um nó de link especifica o índice de seu pai na matriz de coleção de link.

  • Filhos: uma coleção de links é um filho de seu pai. Um pai pode ter zero ou mais filhos. O membro NumberOfChildren de um nó de link especifica o número de filhos que um pai tem.

  • Irmão: Os filhos de um pai são irmãos.

  • Próximo Irmão: Irmãos são ordenados da esquerda para a direita. O próximo irmão de um irmão é o irmão imediatamente à sua direita, se houver, em um conjunto de irmãos. O membro NextSibling de um nó de coleção de link especifica o índice para seu próximo irmão na matriz de coleção de link. Se um nó de coleção de link não tiver um próximo irmão, NextSibling será definido como zero.

  • First Child: O primeiro filho é o irmão mais à esquerda em um conjunto de irmãos. O membro FirstChild de um nó de coleção de link especifica o índice para seu primeiro filho na matriz de coleção de link. Se um nó de coleção de link não tiver filhos, FirstChild será definido como zero.

Um aplicativo ou driver pode determinar todos os filhos de uma coleção pai, começando com o primeiro filho do pai, sequenciando através dos irmãos do primeiro filho até que o membro NextSibling de um nó irmão seja zero.

O código a seguir mostra como usar um índice de nó de coleção de links para localizar o primeiro filho da coleção de links sete:

HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
 
Node1 = Collection[Collection[7].FirstChild];

Coleções aliased

Os itens delimitadores podem ser usados em um descritor de relatório para delimitar um conjunto de coleções aliased. Cada coleção aliased é representada por um nó de coleção de link alias. Um conjunto completo e exclusivo de nós n, n>=2 e aliased é vinculado da seguinte maneira:

  • Os nós aliased estão em ordem consecutiva na matriz de coleção de link.

  • Os primeiros nós n-1 têm seu membro IsAlias definido como TRUE. O nó imediatamente após essa sequência tem seu membro IsAlias definido como FALSE. Esse nó encerra a sequência de nós aliased. O uso associado a esse nó é o uso preferencial.

Um aplicativo ou driver pode determinar quais coleções são aliasadas incrementando repetidamente o índice de matriz de uma matriz de coleção de links para encontrar essas sequências.

Matrizes de funcionalidade de botão e matrizes de funcionalidade de valor identificam, para cada uso que descrevem, a coleção de links que contém o uso. Se uma coleção de links for aliased, as matrizes de funcionalidade especificarão o uso preferencial.