Interpretação de relatórios HID

Este artigo descreve como as aplicações em modo utilizador e os drivers em modo kernel utilizam as rotinas de suporte HidP_Xxx HIDClass para interpretar dados de controlo num relatório HID.

Extração de dados de valor especificando o seu uso

Para extrair dados de valor de um relatório HID, uma aplicação ou driver pode usar uma das seguintes rotinas de suporte HID:

Para usar HidP_GetUsageValueArray aplicações e drivers devem alocar um buffer zero-inicializado, suficientemente grande para armazenar o array de valores de uso. O tamanho exigido em bytes é o produto dos membros BitSize e ReportCount da estrutura HIDP_VALUE_CAPS do array de valores de uso, arredondado para o byte mais próximo.

Extração de usos de botões configurados para ATIVADO

Para extrair os usos das interfaces HID dos botões configurados para ON (1), aplicações e drivers executam uma das seguintes rotinas de suporte HID:

Estas rotinas devolvem um array com toda a informação de utilização dos botões que estão atualmente ativados. Implicitamente, botões cujo uso não é devolvido por estas rotinas são definidos como DESLIGADO (zero).

Para chamar estas rotinas, as aplicações e drivers devem primeiro alocar e zero-inicializar o buffer usado para devolver o array de utilizações dos botões. Uma aplicação ou driver chama HidP_MaxUsageListLength para determinar o número de utilizações de botões numa página de uso especificada no relatório. Se a aplicação ou o driver especificar uma página de utilização zero, a rotina devolve o número de todas as utilizações de botões no relatório.

O tamanho do buffer necessário, em bytes, é:

  • (Para HidP_GetButtons) O valor devolvido por HidP_MaxUsageListLength vezes o tamanho de (USAGE)
  • (Para HidP_GetButtonsEx) O valor retornado por HidP_MaxUsageListLength vezes sizeof(USAGE_AND_PAGE)

Depois de uma aplicação ou driver utilizar estas rotinas para obter informações sobre quais botões estão atualmente definidos como ON, pode determinar a diferença entre o estado atual e o estado anterior dos botões chamando uma das seguintes rotinas de suporte HIDClass. Estas rotinas retornam a diferença entre dois arrays de informação de utilização:

Definição de valor dos dados especificando a sua utilização

Uma aplicação ou driver pode definir um valor num relatório HID devidamente inicializado chamando uma das seguintes rotinas de suporte HID:

Definir o estado do botão especificando o seu uso

Uma aplicação ou driver pode definir o estado dos botões num relatório HID devidamente inicializado chamando uma das seguintes rotinas de suporte HIDClass:

Extração e definição de dados de controlo por índices de dados

Para usar índices de dados para extrair e definir dados de controlo num relatório HID, uma aplicação ou driver pode usar as seguintes rotinas de suporte HIDClass:

Estas rotinas são úteis para uma aplicação ou driver que fornece um serviço de "valor acrescentado". Por exemplo, um que fornece uma interface personalizada para todos os controlos suportados por um dispositivo HIDClass. O Microsoft DirectInput é um exemplo.

Uma aplicação ou driver que chama estas rotinas pode obter e definir todos os valores num relatório de forma mais eficiente. Por exemplo, para obter todos os dados de valor pelos seus usos HID, tem de chamar HidP_GetUsageValue para cada utilização. No entanto, para obter todos os dados de valor por índice de dados, só tem de chamar HidP_GetData uma vez.

Uma aplicação ou driver utiliza os índices de dados especificados nas Matrizes de Capacidades de Botões e Matrizes de Capacidades de Valor de uma coleção para identificar utilizações HID.

Consulte também