Compartilhar via


Coleções de links

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 links.

HidP_GetLinkCollectionNodes retorna a matriz de coleção de links de uma coleção de nível superior que contém informações sobre as coleções de links 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 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 links 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 driver no modo kernel pode determinar a organização e o uso de todas as coleções de links 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 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 links.

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 vínculos são vinculadas em uma ordem de cima para baixo e da esquerda para a direita (ABCD). A tabela a seguir indica, para cada coleção de links no exemplo, os links entre a coleção de nível superior e suas coleções de links.

Nó de link Parente Crianças Primeiro filho Próximo Irmão
A Coleção de nível superior B, C B Nenhum
B A D D C
C A Nenhum Nenhum Nenhum
D B Nenhum Nenhum Nenhum

Em uma matriz de coleção de links, as seguintes definições aplicam-se:

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

  • 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 links especifica o índice para seu próximo irmão na matriz de coleção de links. Se um nó de coleção de links 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 links especifica o índice para seu primeiro elemento na matriz de coleção de links. Se um nó de coleção de links 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 os 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 com Alias

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

  • Os nós associados estão em ordem consecutiva na coleção de links.

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

Um aplicativo ou driver pode determinar quais coleções são referenciadas por alias incrementando repetidamente o índice de um array de coleções de links para encontrar essas sequências.

Matrizes de capacidade de botão e matrizes de capacidade de valor identificam, para cada uso que elas descrevem, a coleção de links que contém o uso. Se uma coleção de links tiver um alias, os arrays de capacidade especificarão o uso preferencial.