1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::hidusage::{PUSAGE, USAGE};
7 use shared::minwindef::{PUCHAR, PULONG, PUSHORT, UCHAR, ULONG, USHORT};
8 use shared::ntdef::NTSTATUS;
9 use shared::ntstatus::FACILITY_HID_ERROR_CODE;
10 use um::winnt::{BOOLEAN, LONG, PCHAR, PLONG, PVOID};
11 pub const HIDP_LINK_COLLECTION_ROOT: USHORT = -1i16 as u16;
12 pub const HIDP_LINK_COLLECTION_UNSPECIFIED: USHORT = 0;
13 ENUM!{enum HIDP_REPORT_TYPE {
14     HidP_Input,
15     HidP_Output,
16     HidP_Feature,
17 }}
18 STRUCT!{struct USAGE_AND_PAGE {
19     Usage: USAGE,
20     UsagePage: USAGE,
21 }}
22 pub type PUSAGE_AND_PAGE = *mut USAGE_AND_PAGE;
23 // HidP_IsSameUsageAndPage
24 STRUCT!{struct HIDP_CAPS_Range {
25     UsageMin: USAGE,
26     UsageMax: USAGE,
27     StringMin: USHORT,
28     StringMax: USHORT,
29     DesignatorMin: USHORT,
30     DesignatorMax: USHORT,
31     DataIndexMin: USHORT,
32     DataIndexMax: USHORT,
33 }}
34 STRUCT!{struct HIDP_CAPS_NotRange {
35     Usage: USAGE,
36     Reserved1: USAGE,
37     StringIndex: USHORT,
38     Reserved2: USHORT,
39     DesignatorIndex: USHORT,
40     Reserved3: USHORT,
41     DataIndex: USHORT,
42     Reserved4: USHORT,
43 }}
44 UNION!{union HIDP_CAPS_u {
45     [u16; 8],
46     Range Range_mut: HIDP_CAPS_Range,
47     NotRange NotRange_mut: HIDP_CAPS_NotRange,
48 }}
49 STRUCT!{struct HIDP_BUTTON_CAPS {
50     UsagePage: USAGE,
51     ReportID: UCHAR,
52     IsAlias: BOOLEAN,
53     BitField: USHORT,
54     LinkCollection: USHORT,
55     LinkUsage: USAGE,
56     LinkUsagePage: USAGE,
57     IsRange: BOOLEAN,
58     IsStringRange: BOOLEAN,
59     IsDesignatorRange: BOOLEAN,
60     IsAbsolute: BOOLEAN,
61     Reserved: [ULONG; 10],
62     u: HIDP_CAPS_u,
63 }}
64 pub type PHIDP_BUTTON_CAPS = *mut HIDP_BUTTON_CAPS;
65 STRUCT!{struct HIDP_VALUE_CAPS {
66     UsagePage: USAGE,
67     ReportID: UCHAR,
68     IsAlias: BOOLEAN,
69     BitField: USHORT,
70     LinkCollection: USHORT,
71     LinkUsage: USAGE,
72     LinkUsagePage: USAGE,
73     IsRange: BOOLEAN,
74     IsStringRange: BOOLEAN,
75     IsDesignatorRange: BOOLEAN,
76     IsAbsolute: BOOLEAN,
77     HasNull: BOOLEAN,
78     Reserved: UCHAR,
79     BitSize: USHORT,
80     ReportCount: USHORT,
81     Reserved2: [USHORT; 5],
82     UnitsExp: ULONG,
83     Units: ULONG,
84     LogicalMin: LONG,
85     LogicalMax: LONG,
86     PhysicalMin: LONG,
87     PhysicalMax: LONG,
88     u: HIDP_CAPS_u,
89 }}
90 pub type PHIDP_VALUE_CAPS = *mut HIDP_VALUE_CAPS;
91 STRUCT!{struct HIDP_LINK_COLLECTION_NODE {
92     LinkUsage: USAGE,
93     LinkUsagePage: USAGE,
94     Parent: USHORT,
95     NumberOfChildren: USHORT,
96     NextSibling: USHORT,
97     FirstChild: USHORT,
98     bit_fields: ULONG,
99     UserContext: PVOID,
100 }}
101 BITFIELD!{HIDP_LINK_COLLECTION_NODE bit_fields: ULONG [
102     CollectionType set_CollectionType[0..8],
103     IsAlias set_IsAlias[8..9],
104 ]}
105 pub type PHIDP_LINK_COLLECTION_NODE = *mut HIDP_LINK_COLLECTION_NODE;
106 pub type PHIDP_REPORT_DESCRIPTOR = PUCHAR;
107 pub enum HIDP_PREPARSED_DATA {}
108 pub type PHIDP_PREPARSED_DATA = *mut HIDP_PREPARSED_DATA;
109 STRUCT!{struct HIDP_CAPS {
110     Usage: USAGE,
111     UsagePage: USAGE,
112     InputReportByteLength: USHORT,
113     OutputReportByteLength: USHORT,
114     FeatureReportByteLength: USHORT,
115     Reserved: [USHORT; 17],
116     NumberLinkCollectionNodes: USHORT,
117     NumberInputButtonCaps: USHORT,
118     NumberInputValueCaps: USHORT,
119     NumberInputDataIndices: USHORT,
120     NumberOutputButtonCaps: USHORT,
121     NumberOutputValueCaps: USHORT,
122     NumberOutputDataIndices: USHORT,
123     NumberFeatureButtonCaps: USHORT,
124     NumberFeatureValueCaps: USHORT,
125     NumberFeatureDataIndices: USHORT,
126 }}
127 pub type PHIDP_CAPS = *mut HIDP_CAPS;
128 UNION!{union HIDP_DATA_u {
129     [u32; 1],
130     RawValue RawValue_mut: ULONG,
131     On On_mut: BOOLEAN,
132 }}
133 STRUCT!{struct HIDP_DATA {
134     DataIndex: USHORT,
135     Reserved: USHORT,
136     u: HIDP_DATA_u,
137 }}
138 pub type PHIDP_DATA = *mut HIDP_DATA;
139 STRUCT!{struct HIDP_UNKNOWN_TOKEN {
140     Token: UCHAR,
141     Reserved: [UCHAR; 3],
142     BitField: ULONG,
143 }}
144 pub type PHIDP_UNKNOWN_TOKEN = *mut HIDP_UNKNOWN_TOKEN;
145 STRUCT!{struct HIDP_EXTENDED_ATTRIBUTES {
146     NumGlobalUnknowns: UCHAR,
147     Reserved: [UCHAR; 3],
148     GlobalUnknowns: PHIDP_UNKNOWN_TOKEN,
149     Data: [ULONG; 1],
150 }}
151 pub type PHIDP_EXTENDED_ATTRIBUTES = *mut HIDP_EXTENDED_ATTRIBUTES;
152 extern "system" {
HidP_GetCaps( PreparsedData: PHIDP_PREPARSED_DATA, Capabilities: PHIDP_CAPS, ) -> NTSTATUS153     pub fn HidP_GetCaps(
154         PreparsedData: PHIDP_PREPARSED_DATA,
155         Capabilities: PHIDP_CAPS,
156     ) -> NTSTATUS;
HidP_GetLinkCollectionNodes( LinkCollectionNodes: PHIDP_LINK_COLLECTION_NODE, LinkCollectionNodesLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, ) -> NTSTATUS157     pub fn HidP_GetLinkCollectionNodes(
158         LinkCollectionNodes: PHIDP_LINK_COLLECTION_NODE,
159         LinkCollectionNodesLength: PULONG,
160         PreparsedData: PHIDP_PREPARSED_DATA,
161     ) -> NTSTATUS;
HidP_GetSpecificButtonCaps( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, ButtonCaps: PHIDP_BUTTON_CAPS, ButtonCapsLength: PUSHORT, PreparsedData: PHIDP_PREPARSED_DATA, ) -> NTSTATUS162     pub fn HidP_GetSpecificButtonCaps(
163         ReportType: HIDP_REPORT_TYPE,
164         UsagePage: USAGE,
165         LinkCollection: USHORT,
166         Usage: USAGE,
167         ButtonCaps: PHIDP_BUTTON_CAPS,
168         ButtonCapsLength: PUSHORT,
169         PreparsedData: PHIDP_PREPARSED_DATA,
170     ) -> NTSTATUS;
HidP_GetButtonCaps( ReportType: HIDP_REPORT_TYPE, ButtonCaps: PHIDP_BUTTON_CAPS, ButtonCapsLength: PUSHORT, PreparsedData: PHIDP_PREPARSED_DATA, ) -> NTSTATUS171     pub fn HidP_GetButtonCaps(
172         ReportType: HIDP_REPORT_TYPE,
173         ButtonCaps: PHIDP_BUTTON_CAPS,
174         ButtonCapsLength: PUSHORT,
175         PreparsedData: PHIDP_PREPARSED_DATA,
176     ) -> NTSTATUS;
HidP_GetSpecificValueCaps( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, ValueCaps: PHIDP_VALUE_CAPS, ValueCapsLength: PUSHORT, PreparsedData: PHIDP_PREPARSED_DATA, ) -> NTSTATUS177     pub fn HidP_GetSpecificValueCaps(
178         ReportType: HIDP_REPORT_TYPE,
179         UsagePage: USAGE,
180         LinkCollection: USHORT,
181         Usage: USAGE,
182         ValueCaps: PHIDP_VALUE_CAPS,
183         ValueCapsLength: PUSHORT,
184         PreparsedData: PHIDP_PREPARSED_DATA,
185     ) -> NTSTATUS;
HidP_GetValueCaps( ReportType: HIDP_REPORT_TYPE, ValueCaps: PHIDP_VALUE_CAPS, ValueCapsLength: PUSHORT, PreparsedData: PHIDP_PREPARSED_DATA, ) -> NTSTATUS186     pub fn HidP_GetValueCaps(
187         ReportType: HIDP_REPORT_TYPE,
188         ValueCaps: PHIDP_VALUE_CAPS,
189         ValueCapsLength: PUSHORT,
190         PreparsedData: PHIDP_PREPARSED_DATA,
191     ) -> NTSTATUS;
HidP_GetExtendedAttributes( ReportType: HIDP_REPORT_TYPE, DataIndex: USHORT, PreparsedData: PHIDP_PREPARSED_DATA, Attributes: PHIDP_EXTENDED_ATTRIBUTES, LengthAttributes: PULONG, ) -> NTSTATUS192     pub fn HidP_GetExtendedAttributes(
193         ReportType: HIDP_REPORT_TYPE,
194         DataIndex: USHORT,
195         PreparsedData: PHIDP_PREPARSED_DATA,
196         Attributes: PHIDP_EXTENDED_ATTRIBUTES,
197         LengthAttributes: PULONG,
198     ) -> NTSTATUS;
HidP_InitializeReportForID( ReportType: HIDP_REPORT_TYPE, ReportID: UCHAR, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS199     pub fn HidP_InitializeReportForID(
200         ReportType: HIDP_REPORT_TYPE,
201         ReportID: UCHAR,
202         PreparsedData: PHIDP_PREPARSED_DATA,
203         Report: PCHAR,
204         ReportLength: ULONG,
205     ) -> NTSTATUS;
HidP_SetData( ReportType: HIDP_REPORT_TYPE, DataList: PHIDP_DATA, DataLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS206     pub fn HidP_SetData(
207         ReportType: HIDP_REPORT_TYPE,
208         DataList: PHIDP_DATA,
209         DataLength: PULONG,
210         PreparsedData: PHIDP_PREPARSED_DATA,
211         Report: PCHAR,
212         ReportLength: ULONG,
213     ) -> NTSTATUS;
HidP_GetData( ReportType: HIDP_REPORT_TYPE, DataList: PHIDP_DATA, DataLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS214     pub fn HidP_GetData(
215         ReportType: HIDP_REPORT_TYPE,
216         DataList: PHIDP_DATA,
217         DataLength: PULONG,
218         PreparsedData: PHIDP_PREPARSED_DATA,
219         Report: PCHAR,
220         ReportLength: ULONG,
221     ) -> NTSTATUS;
HidP_MaxDataListLength( ReportType: HIDP_REPORT_TYPE, PreparsedData: PHIDP_PREPARSED_DATA, ) -> ULONG222     pub fn HidP_MaxDataListLength(
223         ReportType: HIDP_REPORT_TYPE,
224         PreparsedData: PHIDP_PREPARSED_DATA,
225     ) -> ULONG;
HidP_SetUsages( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, UsageList: PUSAGE, UsageLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS226     pub fn HidP_SetUsages(
227         ReportType: HIDP_REPORT_TYPE,
228         UsagePage: USAGE,
229         LinkCollection: USHORT,
230         UsageList: PUSAGE,
231         UsageLength: PULONG,
232         PreparsedData: PHIDP_PREPARSED_DATA,
233         Report: PCHAR,
234         ReportLength: ULONG,
235     ) -> NTSTATUS;
HidP_UnsetUsages( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, UsageList: PUSAGE, UsageLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS236     pub fn HidP_UnsetUsages(
237         ReportType: HIDP_REPORT_TYPE,
238         UsagePage: USAGE,
239         LinkCollection: USHORT,
240         UsageList: PUSAGE,
241         UsageLength: PULONG,
242         PreparsedData: PHIDP_PREPARSED_DATA,
243         Report: PCHAR,
244         ReportLength: ULONG,
245     ) -> NTSTATUS;
HidP_GetUsages( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, UsageList: PUSAGE, UsageLength: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS246     pub fn HidP_GetUsages(
247         ReportType: HIDP_REPORT_TYPE,
248         UsagePage: USAGE,
249         LinkCollection: USHORT,
250         UsageList: PUSAGE,
251         UsageLength: PULONG,
252         PreparsedData: PHIDP_PREPARSED_DATA,
253         Report: PCHAR,
254         ReportLength: ULONG,
255     ) -> NTSTATUS;
HidP_GetUsagesEx( ReportType: HIDP_REPORT_TYPE, LinkCollection: USHORT, ButtonList: PUSAGE_AND_PAGE, UsageLength: *mut ULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS256     pub fn HidP_GetUsagesEx(
257         ReportType: HIDP_REPORT_TYPE,
258         LinkCollection: USHORT,
259         ButtonList: PUSAGE_AND_PAGE,
260         UsageLength: *mut ULONG,
261         PreparsedData: PHIDP_PREPARSED_DATA,
262         Report: PCHAR,
263         ReportLength: ULONG,
264     ) -> NTSTATUS;
HidP_MaxUsageListLength( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, PreparsedData: PHIDP_PREPARSED_DATA, ) -> ULONG265     pub fn HidP_MaxUsageListLength(
266         ReportType: HIDP_REPORT_TYPE,
267         UsagePage: USAGE,
268         PreparsedData: PHIDP_PREPARSED_DATA,
269     ) -> ULONG;
HidP_SetUsageValue( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: ULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS270     pub fn HidP_SetUsageValue(
271         ReportType: HIDP_REPORT_TYPE,
272         UsagePage: USAGE,
273         LinkCollection: USHORT,
274         Usage: USAGE,
275         UsageValue: ULONG,
276         PreparsedData: PHIDP_PREPARSED_DATA,
277         Report: PCHAR,
278         ReportLength: ULONG,
279     ) -> NTSTATUS;
HidP_SetScaledUsageValue( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: LONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS280     pub fn HidP_SetScaledUsageValue(
281         ReportType: HIDP_REPORT_TYPE,
282         UsagePage: USAGE,
283         LinkCollection: USHORT,
284         Usage: USAGE,
285         UsageValue: LONG,
286         PreparsedData: PHIDP_PREPARSED_DATA,
287         Report: PCHAR,
288         ReportLength: ULONG,
289     ) -> NTSTATUS;
HidP_SetUsageValueArray( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: PCHAR, UsageValueByteLength: USHORT, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS290     pub fn HidP_SetUsageValueArray(
291         ReportType: HIDP_REPORT_TYPE,
292         UsagePage: USAGE,
293         LinkCollection: USHORT,
294         Usage: USAGE,
295         UsageValue: PCHAR,
296         UsageValueByteLength: USHORT,
297         PreparsedData: PHIDP_PREPARSED_DATA,
298         Report: PCHAR,
299         ReportLength: ULONG,
300     ) -> NTSTATUS;
HidP_GetUsageValue( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: PULONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS301     pub fn HidP_GetUsageValue(
302         ReportType: HIDP_REPORT_TYPE,
303         UsagePage: USAGE,
304         LinkCollection: USHORT,
305         Usage: USAGE,
306         UsageValue: PULONG,
307         PreparsedData: PHIDP_PREPARSED_DATA,
308         Report: PCHAR,
309         ReportLength: ULONG,
310     ) -> NTSTATUS;
HidP_GetScaledUsageValue( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: PLONG, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS311     pub fn HidP_GetScaledUsageValue(
312         ReportType: HIDP_REPORT_TYPE,
313         UsagePage: USAGE,
314         LinkCollection: USHORT,
315         Usage: USAGE,
316         UsageValue: PLONG,
317         PreparsedData: PHIDP_PREPARSED_DATA,
318         Report: PCHAR,
319         ReportLength: ULONG,
320     ) -> NTSTATUS;
HidP_GetUsageValueArray( ReportType: HIDP_REPORT_TYPE, UsagePage: USAGE, LinkCollection: USHORT, Usage: USAGE, UsageValue: PCHAR, UsageValueByteLength: USHORT, PreparsedData: PHIDP_PREPARSED_DATA, Report: PCHAR, ReportLength: ULONG, ) -> NTSTATUS321     pub fn HidP_GetUsageValueArray(
322         ReportType: HIDP_REPORT_TYPE,
323         UsagePage: USAGE,
324         LinkCollection: USHORT,
325         Usage: USAGE,
326         UsageValue: PCHAR,
327         UsageValueByteLength: USHORT,
328         PreparsedData: PHIDP_PREPARSED_DATA,
329         Report: PCHAR,
330         ReportLength: ULONG,
331     ) -> NTSTATUS;
HidP_UsageListDifference( PreviousUsageList: PUSAGE, CurrentUsageList: PUSAGE, BreakUsageList: PUSAGE, MakeUsageList: PUSAGE, UsageListLength: ULONG, ) -> NTSTATUS332     pub fn HidP_UsageListDifference(
333         PreviousUsageList: PUSAGE,
334         CurrentUsageList: PUSAGE,
335         BreakUsageList: PUSAGE,
336         MakeUsageList: PUSAGE,
337         UsageListLength: ULONG,
338     ) -> NTSTATUS;
HidP_TranslateUsagesToI8042ScanCodes( ChangedUsageList: PUSAGE, UsageListLength: ULONG, KeyAction: HIDP_KEYBOARD_DIRECTION, ModifierState: PHIDP_KEYBOARD_MODIFIER_STATE, InsertCodesProcedure: PHIDP_INSERT_SCANCODES, InsertCodesContext: PVOID, ) -> NTSTATUS339     pub fn HidP_TranslateUsagesToI8042ScanCodes(
340         ChangedUsageList: PUSAGE,
341         UsageListLength: ULONG,
342         KeyAction: HIDP_KEYBOARD_DIRECTION,
343         ModifierState: PHIDP_KEYBOARD_MODIFIER_STATE,
344         InsertCodesProcedure: PHIDP_INSERT_SCANCODES,
345         InsertCodesContext: PVOID,
346     ) -> NTSTATUS;
347 }
348 ENUM!{enum HIDP_KEYBOARD_DIRECTION {
349     HidP_Keyboard_Break,
350     HidP_Keyboard_Make,
351 }}
352 STRUCT!{struct HIDP_KEYBOARD_MODIFIER_STATE {
353     ul: ULONG,
354 }}
355 BITFIELD!{HIDP_KEYBOARD_MODIFIER_STATE ul: ULONG [
356     LeftControl set_LeftControl[0..1],
357     LeftShift set_LeftShift[1..2],
358     LeftAlt set_LeftAlt[2..3],
359     LeftGUI set_LeftGUI[3..4],
360     RightControl set_RightControl[4..5],
361     RightShift set_RightShift[5..6],
362     RightAlt set_RightAlt[6..7],
363     RigthGUI set_RigthGUI[7..8],
364     CapsLock set_CapsLock[8..9],
365     ScollLock set_ScollLock[9..10],
366     NumLock set_NumLock[10..11],
367 ]}
368 pub type PHIDP_KEYBOARD_MODIFIER_STATE = *mut HIDP_KEYBOARD_MODIFIER_STATE;
369 FN!{stdcall PHIDP_INSERT_SCANCODES(
370     Context: PVOID,
371     NewScanCodes: PCHAR,
372     Length: ULONG,
373 ) -> BOOLEAN}
374 pub const HIDP_STATUS_SUCCESS: NTSTATUS = HIDP_ERROR_CODES!(0x0, 0);
375 pub const HIDP_STATUS_NULL: NTSTATUS = HIDP_ERROR_CODES!(0x8, 1);
376 pub const HIDP_STATUS_INVALID_PREPARSED_DATA: NTSTATUS = HIDP_ERROR_CODES!(0xC, 1);
377 pub const HIDP_STATUS_INVALID_REPORT_TYPE: NTSTATUS = HIDP_ERROR_CODES!(0xC, 2);
378 pub const HIDP_STATUS_INVALID_REPORT_LENGTH: NTSTATUS = HIDP_ERROR_CODES!(0xC, 3);
379 pub const HIDP_STATUS_USAGE_NOT_FOUND: NTSTATUS = HIDP_ERROR_CODES!(0xC, 4);
380 pub const HIDP_STATUS_VALUE_OUT_OF_RANGE: NTSTATUS = HIDP_ERROR_CODES!(0xC, 5);
381 pub const HIDP_STATUS_BAD_LOG_PHY_VALUES: NTSTATUS = HIDP_ERROR_CODES!(0xC, 6);
382 pub const HIDP_STATUS_BUFFER_TOO_SMALL: NTSTATUS = HIDP_ERROR_CODES!(0xC, 7);
383 pub const HIDP_STATUS_INTERNAL_ERROR: NTSTATUS = HIDP_ERROR_CODES!(0xC, 8);
384 pub const HIDP_STATUS_I8042_TRANS_UNKNOWN: NTSTATUS = HIDP_ERROR_CODES!(0xC, 9);
385 pub const HIDP_STATUS_INCOMPATIBLE_REPORT_ID: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xA);
386 pub const HIDP_STATUS_NOT_VALUE_ARRAY: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xB);
387 pub const HIDP_STATUS_IS_VALUE_ARRAY: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xC);
388 pub const HIDP_STATUS_DATA_INDEX_NOT_FOUND: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xD);
389 pub const HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xE);
390 pub const HIDP_STATUS_BUTTON_NOT_PRESSED: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xF);
391 pub const HIDP_STATUS_REPORT_DOES_NOT_EXIST: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0x10);
392 pub const HIDP_STATUS_NOT_IMPLEMENTED: NTSTATUS = HIDP_ERROR_CODES!(0xC, 0x20);
393 pub const HIDP_STATUS_I8242_TRANS_UNKNOWN: NTSTATUS = HIDP_STATUS_I8042_TRANS_UNKNOWN;
394