REPORT_COUNT im Device Class Definition for HID 1.11 Dokument in Abschnitt 6.2.2.7 Globale Artikel auf Seite definiert ist 36, wie:
Report Count 1001 01 nn Unsigned integer specifying the number of data
fields for the item; determines how many fields are included in the
report for this particular item (and consequently how many bits are
added to the report).
Die nn in dem obigen Code ist das Element Längenindikator (bSize) und ist bereits in Abschnitt definiert. 6.2.2.2 Short Items wie:
bSize Numeric expression specifying size of data:
0 = 0 bytes
1 = 1 byte
2 = 2 bytes
3 = 4 bytes
Eher verwirrend, die gültigen Werte von bSize sind in Dezimal aufgelistet. Also, in binär, die Bits für nn wäre:
00 = 0 bytes (i.e. there is no data associated with this item)
01 = 1 byte
10 = 2 bytes
11 = 4 bytes
Dass sie alle zusammen für REPORT_COUNT, die eine ganze Zahl ohne Vorzeichen ist, könnten folgende Alternativen angegeben werden:
1001 01 00 = 0x94 = REPORT_COUNT with no length (can only have value 0?)
1001 01 01 = 0x95 = 1-byte REPORT_COUNT (can have a value from 0 to 255)
1001 01 10 = 0x96 = 2-byte REPORT_COUNT (can have a value from 0 to 65535)
1001 01 11 = 0x97 = 4-byte REPORT_COUNT (can have a value from 0 to 4294967295)
Ähnlich für LOGICAL_MAXIMUM, die eine vorzeichenbehaftete Ganzzahl ist (in der Regel gibt es eine Ausnahme):
0010 01 00 = 0x24 = LOGICAL_MAXIMUM with no length (can only have value 0?)
0010 01 01 = 0x25 = 1-byte LOGICAL_MAXIMUM (can have a values from -128 to 127)
0010 01 10 = 0x26 = 2-byte LOGICAL_MAXIMUM (can have a value from -32768 to 32767)
0010 01 11 = 0x27 = 4-byte LOGICAL_MAXIMUM (can have a value from -2147483648 to 2147483647)
Die Spezifikation ist unklar, Welchen Wert ein Element der Länge Null im Allgemeinen hat. Er erwähnt nur am Ende des Abschnitts 6.2.2.4 Haupt Artikel, dass MAIN Elementtypen und innerhalb dieser Art, INPUT Element-Tags, einen Standardwert von 0 haben:
Remarks - The default data value for all Main items is zero (0).
- An Input item could have a data size of zero (0) bytes. In this case the value of
each data bit for the item can be assumed to be zero. This is functionally
identical to using a item tag that specifies a 4-byte data item followed by four
zero bytes.
Es wäre vernünftig, nehme auch 0 als Standard für andere Elementtypen an, aber für REPORT_COUNT (ein GLOBAL-Element) ist ein Wert von 0 nicht wirklich ein vernünftiger Standardwert (IMHO). Die Spezifikation sagt nicht wirklich.
Große Antwort. Vielen Dank! – itsallgood
Nicht spezifizierte Zero-Size-Objekte werden vom Windows-HID-Parser nicht akzeptiert (obwohl sie unter Mac OS, iOS und Linux funktionieren). – Nipo