Troubleshooting: HID Report Identifier Errors
9/8/2008
Descrição
Quando um driver recebe um relatório HID de uma coleção HID, ele pode ser qualquer relatório que contém a coleção, porque uma coleção pode retornar os relatórios em qualquer ordem.
A seguinte tabela mostra os valores de status que o HidP_GetXXX funções retornar para indicar valores identificador relatório.
Valor do status | Descrição |
---|---|
HIDP_STATUS_INCOMPATIBLE_REPORT_ID |
Solicitada uso está em um relatório com suporte pela coleção HID, mas não do relatório que o driver especificado. |
HIDP_STATUS_USAGE_NOT_FOUND |
Solicitado o uso não está em qualquer relatório com suporte pela de alto nível coleção. |
De exemplo, suponha que um driver recebe um relatório de uma coleção e, em seguida, chama HidP_GetUsageValue Para extrair um valor de uso. Se identificador do relatório for sete, a função retornará HIDP_STATUS_INCOMPATIBLE_REPORT_ID, que indica que o dispositivo suporta o valor retornado, mas o valor retornado não está no relatório. Por outro lado, se o driver solicita um valor, a função retorna HIDP_STATUS_USAGE_NOT_FOUND, que indica que o valor não está em qualquer relatório com suporte pela coleção.
Quando usa um driver de HidP_SetXXX funções Definir usos em um relatório, o pode funções também retornam os mesmos valores status dois. O significado dos HIDP_STATUS_USAGE_NOT_FOUND é o mesmo que com o HidP_GetXXX funções. No entanto, o significado dos HIDP_STATUS_INCOMPATIBLE_REPORT_ID é diferente. Este valor status indica que o relatório tiver sido configurado anteriormente com um identificador relatório, e o uso especificado pelo chamador não pertence ao identificador desse relatório. Após usa um driver HidP_SetUsages Para definir um botão em um relatório zero-initialized, o relatório é configurado com um identificador relatório de um valor especificado. Se o driver subseqüentemente tenta usar HidP_SetUsageValue Para definir um valor no mesmo relatório, a função retorna HIDP_STATUS_INCOMPATIBLE_REPORT_ID.
Resolução
A seguinte lista mostra as ações que o chamador deve realizar se um HidP_XXX função retorna HIDP_STATUS_INCOMPATIBLE_REPORT_ID:
- Se o chamador define usos, o chamador deve alocar um novo relatório o comprimento correto, inicializá-lo para zero e em seguida, chamar a função novamente. O chamador pode enviar o relatório para a coleção depois com êxito configuração Todos os usos no relatório.
- Se o chamador extrai usos, o chamador deve chamar a função com um relatório diferente obtido a coleção.