Matrizes de funcionalidade de botão
Uma matriz de funcionalidades de botão contém informações sobre os usos de botão compatíveis com uma coleção de nível superior para um tipo específico de relatório HID. Informações sobre a funcionalidade de uma coleção estão contidas em sua estrutura de HIDP_CAPS .
Um aplicativo no modo de usuário ou driver de modo kernel usa uma das seguintes rotinas de suporte hidclass para obter informações de funcionalidade de botão:
HidP_GetButtonCaps retorna uma matriz de recursos de botão que descreve todos os usos de botão contidos em um tipo de relatório especificado.
HidP_GetSpecificButtonCaps filtra as informações de funcionalidade do botão que retorna por uma página de uso, uma ID de uso e uma coleção de link especificadas pelo chamador.
Uma matriz de recursos de botão contém HIDP_BUTTON_CAPS estruturas, cada uma das quais contém as seguintes informações sobre um uso hid ou intervalo de uso:
A página de uso do intervalo de uso ou uso
A ID do relatório que contém os dados do botão
A ID de uso ou o intervalo de uso
Um sinalizador que indica se um uso é um uso de alias
A coleção de links que contém o uso ou o intervalo de uso
Os descritores de cadeia de caracteres e os designadores associados ao uso ou ao intervalo de uso (consulte Item de índice do designador e item Índice de cadeia de caracteres)
Os índices de dados que o analisador HID atribuiu ao intervalo de uso ou uso
Em geral, as seguintes condições são mantidas para todos os usos descritos por uma matriz de funcionalidades de botão:
Cada estrutura de funcionalidade representa um único intervalo de uso ou uso associado a uma variável main item ou a uma matriz main item.
Os usos aliased podem ser usados com uma variável main item. Um uso associado a um item de matriz não pode ser alias. Um intervalo de uso não pode ser alias.
O analisador HID usa apenas o número mínimo necessário de usos para atribuir um uso a cada botão. O analisador atribui usos na ordem em que são especificados em um descritor de relatório. Os usos em um descritor de relatório que não são necessários são descartados. A matriz de funcionalidades do botão não contém informações sobre usos descartados.
Se o número de usos especificado para um item de variável for menor que o número de botões no item, a matriz de funcionalidades conterá apenas uma estrutura de funcionalidade que descreve um uso de botão (o último uso especificado no descritor de relatório para a variável main item). No entanto, consulte Matriz de Valor de Uso para obter informações sobre valores de uso que têm uma contagem de relatórios maior que um.
O analisador HID atribui um índice de dados exclusivo a cada uso descrito na matriz de funcionalidades.
Os tópicos a seguir discutem como as estruturas de funcionalidade são organizadas e definidas em uma matriz de recursos de botão:
Usos de botão em uma variável main item
Cada intervalo de uso ou uso especificado em um descritor de relatório é descrito por sua própria estrutura de funcionalidade em uma matriz de funcionalidade de botão.
O membro IsAlias das estruturas de funcionalidade é usado para especificar um conjunto de n usos aliased da seguinte maneira:
- IsAlias é definido como TRUE nas primeiras estruturas de funcionalidade n-1 adicionadas à matriz de funcionalidades. IsAlias definido como FALSEna nth estrutura de funcionalidade. O uso preferencial é o último uso de alias na sequência.
Um aplicativo ou driver pode determinar quais usos de botão são aliasados pela verificação dessas sequências.
A tabela a seguir resume um exemplo para três usos de alias.
Ordem de uso aliased em um descritor de relatório | Ordem de uso em uma matriz de recursos | Valor do membro IsAlias |
---|---|---|
uso 1 | uso 3 | TRUE |
uso 2 | uso 2 | TRUE |
uso 3 | uso 1 | FALSE |
Para obter informações sobre como os usos e índices de dados são referenciados entre referências, consulte Índices de dados.
Usos de botão em uma matriz main item
Cada intervalo de uso ou uso de uma matriz de botões main item especificado em um descritor de relatório é descrito por sua própria estrutura de funcionalidade em uma matriz de recursos de botão. A ordem na qual as estruturas de funcionalidade são adicionadas a uma matriz de recursos é o inverso da ordem em que os usos são especificados para um item de main.
O analisador HID atribui um índice de dados a cada uso associado ao item de matriz na ordem em que os usos são especificados em um descritor de relatório. Por exemplo, a tabela a seguir mostra a correspondência entre um conjunto de usos, conforme especificado em um descritor de relatório, e os usos e índices de dados, conforme especificado na matriz de recursos. (Nesta tabela, n é o primeiro índice de dados que o analisador atribui ao primeiro uso associado ao item da matriz.)
Ordem de uso no descritor de relatório | Ordem de uso na matriz de funcionalidades | DataIndex ou de DataIndexMin para DataIndexMax |
---|---|---|
uso 1 | intervalo de uso 2 | de n+7 a n+8 |
intervalo de uso 1 (com 4 usos) | uso 2 | n+5 |
uso 2 | intervalo de uso 1 | de n+1 a n+4 |
intervalo de uso 2 (com 2 usos) | uso 1 | n |