ca6d89141f845efeef71e2d1559515e7f32b4b2c
[reactos.git] / include / psdk / hidpi.h
1 /*
2 * hidpi.h
3 *
4 * Public Interface for HID parsing library.
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __HIDPI_H
24 #define __HIDPI_H
25
26 #include "hidusage.h"
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #if defined(_HIDPI_)
33 #define HIDAPI
34 #else
35 #define HIDAPI DECLSPEC_IMPORT
36 #endif
37
38 typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
39 typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
40
41 typedef struct _HIDP_UNKNOWN_TOKEN {
42 UCHAR Token;
43 UCHAR Reserved[3];
44 ULONG BitField;
45 } HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
46
47 typedef enum _HIDP_KEYBOARD_DIRECTION {
48 HidP_Keyboard_Break,
49 HidP_Keyboard_Make
50 } HIDP_KEYBOARD_DIRECTION;
51
52 typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
53 _ANONYMOUS_UNION union {
54 _ANONYMOUS_STRUCT struct {
55 ULONG LeftControl : 1;
56 ULONG LeftShift : 1;
57 ULONG LeftAlt : 1;
58 ULONG LeftGUI : 1;
59 ULONG RightControl : 1;
60 ULONG RightShift : 1;
61 ULONG RightAlt : 1;
62 ULONG RigthGUI : 1;
63 ULONG CapsLock : 1;
64 ULONG ScollLock : 1;
65 ULONG NumLock : 1;
66 ULONG Reserved : 21;
67 } DUMMYSTRUCTNAME;
68 ULONG ul;
69 } DUMMYUNIONNAME;
70 } HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
71
72 typedef BOOLEAN (NTAPI *PHIDP_INSERT_SCANCODES)(
73 IN PVOID Context,
74 IN PCHAR NewScanCodes,
75 IN ULONG Length);
76
77 typedef struct _USAGE_AND_PAGE {
78 USAGE Usage;
79 USAGE UsagePage;
80 } USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
81
82 typedef struct _HIDD_ATTRIBUTES {
83 ULONG Size;
84 USHORT VendorID;
85 USHORT ProductID;
86 USHORT VersionNumber;
87 } HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
88
89 typedef struct _HIDD_CONFIGURATION {
90 PVOID cookie;
91 ULONG size;
92 ULONG RingBufferSize;
93 } HIDD_CONFIGURATION, *PHIDD_CONFIGURATION;
94
95 HIDAPI
96 NTSTATUS
97 NTAPI
98 HidP_TranslateUsageAndPagesToI8042ScanCodes(
99 IN PUSAGE_AND_PAGE ChangedUsageList,
100 IN ULONG UsageListLength,
101 IN HIDP_KEYBOARD_DIRECTION KeyAction,
102 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
103 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
104 IN PVOID InsertCodesContext);
105
106 HIDAPI
107 NTSTATUS
108 NTAPI
109 HidP_TranslateUsagesToI8042ScanCodes(
110 IN PUSAGE ChangedUsageList,
111 IN ULONG UsageListLength,
112 IN HIDP_KEYBOARD_DIRECTION KeyAction,
113 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
114 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
115 IN PVOID InsertCodesContext);
116
117 typedef struct _HIDP_BUTTON_CAPS {
118 USAGE UsagePage;
119 UCHAR ReportID;
120 BOOLEAN IsAlias;
121 USHORT BitField;
122 USHORT LinkCollection;
123 USAGE LinkUsage;
124 USAGE LinkUsagePage;
125 BOOLEAN IsRange;
126 BOOLEAN IsStringRange;
127 BOOLEAN IsDesignatorRange;
128 BOOLEAN IsAbsolute;
129 ULONG Reserved[10];
130 _ANONYMOUS_UNION union {
131 struct {
132 USAGE UsageMin, UsageMax;
133 USHORT StringMin, StringMax;
134 USHORT DesignatorMin, DesignatorMax;
135 USHORT DataIndexMin, DataIndexMax;
136 } Range;
137 struct {
138 USAGE Usage, Reserved1;
139 USHORT StringIndex, Reserved2;
140 USHORT DesignatorIndex, Reserved3;
141 USHORT DataIndex, Reserved4;
142 } NotRange;
143 } DUMMYUNIONNAME;
144 } HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
145
146 typedef struct _HIDP_CAPS {
147 USAGE Usage;
148 USAGE UsagePage;
149 USHORT InputReportByteLength;
150 USHORT OutputReportByteLength;
151 USHORT FeatureReportByteLength;
152 USHORT Reserved[17];
153 USHORT NumberLinkCollectionNodes;
154 USHORT NumberInputButtonCaps;
155 USHORT NumberInputValueCaps;
156 USHORT NumberInputDataIndices;
157 USHORT NumberOutputButtonCaps;
158 USHORT NumberOutputValueCaps;
159 USHORT NumberOutputDataIndices;
160 USHORT NumberFeatureButtonCaps;
161 USHORT NumberFeatureValueCaps;
162 USHORT NumberFeatureDataIndices;
163 } HIDP_CAPS, *PHIDP_CAPS;
164
165 typedef struct _HIDP_DATA {
166 USHORT DataIndex;
167 USHORT Reserved;
168 _ANONYMOUS_UNION union {
169 ULONG RawValue;
170 BOOLEAN On;
171 } DUMMYUNIONNAME;
172 } HIDP_DATA, *PHIDP_DATA;
173
174 typedef struct _HIDP_EXTENDED_ATTRIBUTES {
175 UCHAR NumGlobalUnknowns;
176 UCHAR Reserved[3];
177 PHIDP_UNKNOWN_TOKEN GlobalUnknowns;
178 ULONG Data[1];
179 } HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
180
181 #define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1)
182 #define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0)
183
184 typedef struct _HIDP_LINK_COLLECTION_NODE {
185 USAGE LinkUsage;
186 USAGE LinkUsagePage;
187 USHORT Parent;
188 USHORT NumberOfChildren;
189 USHORT NextSibling;
190 USHORT FirstChild;
191 ULONG CollectionType: 8;
192 ULONG IsAlias: 1;
193 ULONG Reserved: 23;
194 PVOID UserContext;
195 } HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
196
197 typedef struct _HIDP_VALUE_CAPS {
198 USAGE UsagePage;
199 UCHAR ReportID;
200 BOOLEAN IsAlias;
201 USHORT BitField;
202 USHORT LinkCollection;
203 USAGE LinkUsage;
204 USAGE LinkUsagePage;
205 BOOLEAN IsRange;
206 BOOLEAN IsStringRange;
207 BOOLEAN IsDesignatorRange;
208 BOOLEAN IsAbsolute;
209 BOOLEAN HasNull;
210 UCHAR Reserved;
211 USHORT BitSize;
212 USHORT ReportCount;
213 USHORT Reserved2[5];
214 ULONG UnitsExp;
215 ULONG Units;
216 LONG LogicalMin, LogicalMax;
217 LONG PhysicalMin, PhysicalMax;
218 _ANONYMOUS_UNION union {
219 struct {
220 USAGE UsageMin, UsageMax;
221 USHORT StringMin, StringMax;
222 USHORT DesignatorMin, DesignatorMax;
223 USHORT DataIndexMin, DataIndexMax;
224 } Range;
225 struct {
226 USAGE Usage, Reserved1;
227 USHORT StringIndex, Reserved2;
228 USHORT DesignatorIndex, Reserved3;
229 USHORT DataIndex, Reserved4;
230 } NotRange;
231 } DUMMYUNIONNAME;
232 } HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
233
234 typedef enum _HIDP_REPORT_TYPE {
235 HidP_Input,
236 HidP_Output,
237 HidP_Feature
238 } HIDP_REPORT_TYPE;
239
240 #define FACILITY_HID_ERROR_CODE 0x11
241
242 #define HIDP_ERROR_CODES(SEV, CODE) \
243 ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
244
245 #define HIDP_STATUS_SUCCESS (HIDP_ERROR_CODES(0x0, 0))
246 #define HIDP_STATUS_NULL (HIDP_ERROR_CODES(0x8, 1))
247 #define HIDP_STATUS_INVALID_PREPARSED_DATA (HIDP_ERROR_CODES(0xC, 1))
248 #define HIDP_STATUS_INVALID_REPORT_TYPE (HIDP_ERROR_CODES(0xC, 2))
249 #define HIDP_STATUS_INVALID_REPORT_LENGTH (HIDP_ERROR_CODES(0xC, 3))
250 #define HIDP_STATUS_USAGE_NOT_FOUND (HIDP_ERROR_CODES(0xC, 4))
251 #define HIDP_STATUS_VALUE_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 5))
252 #define HIDP_STATUS_BAD_LOG_PHY_VALUES (HIDP_ERROR_CODES(0xC, 6))
253 #define HIDP_STATUS_BUFFER_TOO_SMALL (HIDP_ERROR_CODES(0xC, 7))
254 #define HIDP_STATUS_INTERNAL_ERROR (HIDP_ERROR_CODES(0xC, 8))
255 #define HIDP_STATUS_I8042_TRANS_UNKNOWN (HIDP_ERROR_CODES(0xC, 9))
256 #define HIDP_STATUS_INCOMPATIBLE_REPORT_ID (HIDP_ERROR_CODES(0xC, 0xA))
257 #define HIDP_STATUS_NOT_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xB))
258 #define HIDP_STATUS_IS_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xC))
259 #define HIDP_STATUS_DATA_INDEX_NOT_FOUND (HIDP_ERROR_CODES(0xC, 0xD))
260 #define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
261 #define HIDP_STATUS_BUTTON_NOT_PRESSED (HIDP_ERROR_CODES(0xC, 0xF))
262 #define HIDP_STATUS_REPORT_DOES_NOT_EXIST (HIDP_ERROR_CODES(0xC, 0x10))
263 #define HIDP_STATUS_NOT_IMPLEMENTED (HIDP_ERROR_CODES(0xC, 0x20))
264 #define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN
265
266
267 #if !defined(_HIDPI_NO_FUNCTION_MACROS_)
268 /*
269 * NTSTATUS
270 * HidP_GetButtonCaps(
271 * IN HIDP_REPORT_TYPE ReportType,
272 * OUT PHIDP_BUTTON_CAPS ButtonCaps,
273 * IN OUT PULONG ButtonCapsLength,
274 * IN PHIDP_PREPARSED_DATA PreparsedData);
275 */
276 #define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
277 HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
278
279 /*
280 * NTSTATUS
281 * HidP_GetButtons(
282 * IN HIDP_REPORT_TYPE ReportType,
283 * IN USAGE UsagePage,
284 * IN USHORT LinkCollection,
285 * OUT USAGE *UsageList,
286 * IN OUT ULONG *UsageLength,
287 * IN PHIDP_PREPARSED_DATA PreparsedData,
288 * IN PCHAR Report,
289 * IN ULONG ReportLength);
290 */
291 #define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
292 HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
293
294 #define HidP_GetButtonListLength(RTy, UPa, Ppd) \
295 HidP_GetUsageListLength(Rty, UPa, Ppd)
296
297
298 /*
299 * NTSTATUS
300 * HidP_GetButtonsEx(
301 * IN HIDP_REPORT_TYPE ReportType,
302 * IN USHORT LinkCollection,
303 * OUT PUSAGE_AND_PAGE ButtonList,
304 * IN OUT ULONG *UsageLength,
305 * IN PHIDP_PREPARSED_DATA PreparsedData,
306 * IN PCHAR Report,
307 * IN ULONG ReportLength);
308 */
309 #define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL) \
310 HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
311
312 #endif /* _HIDPI_NO_FUNCTION_MACROS_ */
313
314 HIDAPI
315 NTSTATUS
316 NTAPI
317 HidP_GetCaps(
318 IN PHIDP_PREPARSED_DATA PreparsedData,
319 OUT PHIDP_CAPS Capabilities);
320
321 HIDAPI
322 NTSTATUS
323 NTAPI
324 HidP_GetData(
325 IN HIDP_REPORT_TYPE ReportType,
326 OUT PHIDP_DATA DataList,
327 IN OUT PULONG DataLength,
328 IN PHIDP_PREPARSED_DATA PreparsedData,
329 IN PCHAR Report,
330 IN ULONG ReportLength);
331
332 HIDAPI
333 NTSTATUS
334 NTAPI
335 HidP_GetExtendedAttributes(
336 IN HIDP_REPORT_TYPE ReportType,
337 IN USHORT DataIndex,
338 IN PHIDP_PREPARSED_DATA PreparsedData,
339 OUT PHIDP_EXTENDED_ATTRIBUTES Attributes,
340 IN OUT PULONG LengthAttributes);
341
342 HIDAPI
343 NTSTATUS
344 NTAPI
345 HidP_GetLinkCollectionNodes(
346 OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
347 IN OUT PULONG LinkCollectionNodesLength,
348 IN PHIDP_PREPARSED_DATA PreparsedData);
349
350 HIDAPI
351 NTSTATUS
352 NTAPI
353 HidP_GetScaledUsageValue(
354 IN HIDP_REPORT_TYPE ReportType,
355 IN USAGE UsagePage,
356 IN USHORT LinkCollection OPTIONAL,
357 IN USAGE Usage,
358 OUT PLONG UsageValue,
359 IN PHIDP_PREPARSED_DATA PreparsedData,
360 IN PCHAR Report,
361 IN ULONG ReportLength);
362
363 HIDAPI
364 NTSTATUS
365 NTAPI
366 HidP_GetSpecificButtonCaps(
367 IN HIDP_REPORT_TYPE ReportType,
368 IN USAGE UsagePage,
369 IN USHORT LinkCollection,
370 IN USAGE Usage,
371 OUT PHIDP_BUTTON_CAPS ButtonCaps,
372 IN OUT PULONG ButtonCapsLength,
373 IN PHIDP_PREPARSED_DATA PreparsedData);
374
375 HIDAPI
376 NTSTATUS
377 NTAPI
378 HidP_GetSpecificValueCaps(
379 IN HIDP_REPORT_TYPE ReportType,
380 IN USAGE UsagePage,
381 IN USHORT LinkCollection,
382 IN USAGE Usage,
383 OUT PHIDP_VALUE_CAPS ValueCaps,
384 IN OUT PULONG ValueCapsLength,
385 IN PHIDP_PREPARSED_DATA PreparsedData);
386
387 HIDAPI
388 NTSTATUS
389 NTAPI
390 HidP_GetUsages(
391 IN HIDP_REPORT_TYPE ReportType,
392 IN USAGE UsagePage,
393 IN USHORT LinkCollection OPTIONAL,
394 OUT USAGE *UsageList,
395 IN OUT ULONG *UsageLength,
396 IN PHIDP_PREPARSED_DATA PreparsedData,
397 IN PCHAR Report,
398 IN ULONG ReportLength);
399
400 HIDAPI
401 NTSTATUS
402 NTAPI
403 HidP_GetUsagesEx(
404 IN HIDP_REPORT_TYPE ReportType,
405 IN USHORT LinkCollection,
406 OUT PUSAGE_AND_PAGE ButtonList,
407 IN OUT ULONG *UsageLength,
408 IN PHIDP_PREPARSED_DATA PreparsedData,
409 IN PCHAR Report,
410 IN ULONG ReportLength);
411
412 HIDAPI
413 NTSTATUS
414 NTAPI
415 HidP_GetUsageValue(
416 IN HIDP_REPORT_TYPE ReportType,
417 IN USAGE UsagePage,
418 IN USHORT LinkCollection,
419 IN USAGE Usage,
420 OUT PULONG UsageValue,
421 IN PHIDP_PREPARSED_DATA PreparsedData,
422 IN PCHAR Report,
423 IN ULONG ReportLength);
424
425 HIDAPI
426 NTSTATUS
427 NTAPI
428 HidP_GetUsageValueArray(
429 IN HIDP_REPORT_TYPE ReportType,
430 IN USAGE UsagePage,
431 IN USHORT LinkCollection OPTIONAL,
432 IN USAGE Usage,
433 OUT PCHAR UsageValue,
434 IN USHORT UsageValueByteLength,
435 IN PHIDP_PREPARSED_DATA PreparsedData,
436 IN PCHAR Report,
437 IN ULONG ReportLength);
438
439 #if !defined(_HIDPI_NO_FUNCTION_MACROS_)
440
441 /*
442 * NTSTATUS
443 * HidP_GetValueCaps(
444 * IN HIDP_REPORT_TYPE ReportType,
445 * OUT PHIDP_VALUE_CAPS ValueCaps,
446 * IN OUT PULONG ValueCapsLength,
447 * IN PHIDP_PREPARSED_DATA PreparsedData);
448 */
449 #define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
450 HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
451
452 #endif /* _HIDPI_NO_FUNCTION_MACROS_ */
453
454 HIDAPI
455 NTSTATUS
456 NTAPI
457 HidP_InitializeReportForID(
458 IN HIDP_REPORT_TYPE ReportType,
459 IN UCHAR ReportID,
460 IN PHIDP_PREPARSED_DATA PreparsedData,
461 IN OUT PCHAR Report,
462 IN ULONG ReportLength);
463
464 #if !defined(_HIDPI_NO_FUNCTION_MACROS_)
465
466 /*
467 * BOOLEAN
468 * HidP_IsSameUsageAndPage(
469 * USAGE_AND_PAGE u1,
470 * USAGE_AND_PAGE u2);
471 */
472 #define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
473
474 #endif /* _HIDPI_NO_FUNCTION_MACROS_ */
475
476 HIDAPI
477 ULONG
478 NTAPI
479 HidP_MaxDataListLength(
480 IN HIDP_REPORT_TYPE ReportType,
481 IN PHIDP_PREPARSED_DATA PreparsedData);
482
483 HIDAPI
484 ULONG
485 NTAPI
486 HidP_MaxUsageListLength(
487 IN HIDP_REPORT_TYPE ReportType,
488 IN USAGE UsagePage OPTIONAL,
489 IN PHIDP_PREPARSED_DATA PreparsedData);
490
491 #if !defined(_HIDPI_NO_FUNCTION_MACROS_)
492
493 /*
494 * NTSTATUS
495 * HidP_SetButtons(
496 * IN HIDP_REPORT_TYPE ReportType,
497 * IN USAGE UsagePage,
498 * IN USHORT LinkCollection,
499 * IN PUSAGE UsageList,
500 * IN OUT PULONG UsageLength,
501 * IN PHIDP_PREPARSED_DATA PreparsedData,
502 * IN OUT PCHAR Report,
503 * IN ULONG ReportLength);
504 */
505 #define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
506 HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
507
508 #endif /* _HIDPI_NO_FUNCTION_MACROS_ */
509
510 HIDAPI
511 NTSTATUS
512 NTAPI
513 HidP_SetData(
514 IN HIDP_REPORT_TYPE ReportType,
515 IN PHIDP_DATA DataList,
516 IN OUT PULONG DataLength,
517 IN PHIDP_PREPARSED_DATA PreparsedData,
518 IN OUT PCHAR Report,
519 IN ULONG ReportLength);
520
521 HIDAPI
522 NTSTATUS
523 NTAPI
524 HidP_SetScaledUsageValue(
525 IN HIDP_REPORT_TYPE ReportType,
526 IN USAGE UsagePage,
527 IN USHORT LinkCollection OPTIONAL,
528 IN USAGE Usage,
529 IN LONG UsageValue,
530 IN PHIDP_PREPARSED_DATA PreparsedData,
531 IN OUT PCHAR Report,
532 IN ULONG ReportLength);
533
534 HIDAPI
535 NTSTATUS
536 NTAPI
537 HidP_SetUsages(
538 IN HIDP_REPORT_TYPE ReportType,
539 IN USAGE UsagePage,
540 IN USHORT LinkCollection, /* Optional */
541 IN PUSAGE UsageList,
542 IN OUT PULONG UsageLength,
543 IN PHIDP_PREPARSED_DATA PreparsedData,
544 IN OUT PCHAR Report,
545 IN ULONG ReportLength);
546
547 HIDAPI
548 NTSTATUS
549 NTAPI
550 HidP_SetUsageValue(
551 IN HIDP_REPORT_TYPE ReportType,
552 IN USAGE UsagePage,
553 IN USHORT LinkCollection,
554 IN USAGE Usage,
555 IN ULONG UsageValue,
556 IN PHIDP_PREPARSED_DATA PreparsedData,
557 IN OUT PCHAR Report,
558 IN ULONG ReportLength);
559
560 HIDAPI
561 NTSTATUS
562 NTAPI
563 HidP_SetUsageValueArray(
564 IN HIDP_REPORT_TYPE ReportType,
565 IN USAGE UsagePage,
566 IN USHORT LinkCollection OPTIONAL,
567 IN USAGE Usage,
568 IN PCHAR UsageValue,
569 IN USHORT UsageValueByteLength,
570 IN PHIDP_PREPARSED_DATA PreparsedData,
571 OUT PCHAR Report,
572 IN ULONG ReportLength);
573
574 #if !defined(_HIDPI_NO_FUNCTION_MACROS_)
575
576 /*
577 * NTSTATUS
578 * HidP_UnsetButtons(
579 * IN HIDP_REPORT_TYPE ReportType,
580 * IN USAGE UsagePage,
581 * IN USHORT LinkCollection,
582 * IN PUSAGE UsageList,
583 * IN OUT PULONG UsageLength,
584 * IN PHIDP_PREPARSED_DATA PreparsedData,
585 * IN OUT PCHAR Report,
586 * IN ULONG ReportLength);
587 */
588 #define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
589 HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
590
591 #endif /* _HIDPI_NO_FUNCTION_MACROS_ */
592
593 HIDAPI
594 NTSTATUS
595 NTAPI
596 HidP_UnsetUsages(
597 IN HIDP_REPORT_TYPE ReportType,
598 IN USAGE UsagePage,
599 IN USHORT LinkCollection,
600 IN PUSAGE UsageList,
601 IN OUT PULONG UsageLength,
602 IN PHIDP_PREPARSED_DATA PreparsedData,
603 IN OUT PCHAR Report,
604 IN ULONG ReportLength);
605
606 HIDAPI
607 NTSTATUS
608 NTAPI
609 HidP_UsageAndPageListDifference(
610 IN PUSAGE_AND_PAGE PreviousUsageList,
611 IN PUSAGE_AND_PAGE CurrentUsageList,
612 OUT PUSAGE_AND_PAGE BreakUsageList,
613 OUT PUSAGE_AND_PAGE MakeUsageList,
614 IN ULONG UsageListLength);
615
616 HIDAPI
617 NTSTATUS
618 NTAPI
619 HidP_UsageListDifference(
620 IN PUSAGE PreviousUsageList,
621 IN PUSAGE CurrentUsageList,
622 OUT PUSAGE BreakUsageList,
623 OUT PUSAGE MakeUsageList,
624 IN ULONG UsageListLength);
625
626 #ifdef __cplusplus
627 }
628 #endif
629
630 #endif /* __HIDPI_H */