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