Initial bulk commit for "Git on MSys"
[msysgit/historical-msysgit.git] / mingw / include / ddk / hidpi.h
blob10ea48c0ce9e1901db7d6de43d2b74c2cd239e07
1 /*
2 * hidpi.h
4 * Public Interface for HID parsing library.
6 * This file is part of the w32api package.
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
23 #ifndef __HIDPI_H
24 #define __HIDPI_H
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
34 #include "ntddk.h"
35 #include "hidusage.h"
37 #if defined(_HIDPI_)
38 #define HIDAPI DECLSPEC_EXPORT
39 #else
40 #define HIDAPI DECLSPEC_IMPORT
41 #endif
43 typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
44 typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
46 typedef struct _HIDP_UNKNOWN_TOKEN {
47 UCHAR Token;
48 UCHAR Reserved[3];
49 ULONG BitField;
50 } HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
52 typedef enum _HIDP_KEYBOARD_DIRECTION {
53 HidP_Keyboard_Break,
54 HidP_Keyboard_Make
55 } HIDP_KEYBOARD_DIRECTION;
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;
77 typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)(
78 /*IN*/ PVOID Context,
79 /*IN*/ PCHAR NewScanCodes,
80 /*IN*/ ULONG Length);
82 typedef struct _USAGE_AND_PAGE {
83 USAGE Usage;
84 USAGE UsagePage;
85 } USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
87 HIDAPI
88 NTSTATUS
89 DDKAPI
90 HidP_TranslateUsageAndPagesToI8042ScanCodes(
91 /*IN*/ PUSAGE_AND_PAGE ChangedUsageList,
92 /*IN*/ ULONG UsageListLength,
93 /*IN*/ HIDP_KEYBOARD_DIRECTION KeyAction,
94 /*IN OUT*/ PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
95 /*IN*/ PHIDP_INSERT_SCANCODES InsertCodesProcedure,
96 /*IN*/ PVOID InsertCodesContext);
98 HIDAPI
99 NTSTATUS
100 DDKAPI
101 HidP_TranslateUsagesToI8042ScanCodes(
102 /*IN*/ PUSAGE ChangedUsageList,
103 /*IN*/ ULONG UsageListLength,
104 /*IN*/ HIDP_KEYBOARD_DIRECTION KeyAction,
105 /*IN OUT*/ PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
106 /*IN*/ PHIDP_INSERT_SCANCODES InsertCodesProcedure,
107 /*IN*/ PVOID InsertCodesContext);
109 typedef struct _HIDP_BUTTON_CAPS {
110 USAGE UsagePage;
111 UCHAR ReportID;
112 BOOLEAN IsAlias;
113 USHORT BitField;
114 USHORT LinkCollection;
115 USAGE LinkUsage;
116 USAGE LinkUsagePage;
117 BOOLEAN IsRange;
118 BOOLEAN IsStringRange;
119 BOOLEAN IsDesignatorRange;
120 BOOLEAN IsAbsolute;
121 ULONG Reserved[10];
122 _ANONYMOUS_UNION union {
123 struct {
124 USAGE UsageMin, UsageMax;
125 USHORT StringMin, StringMax;
126 USHORT DesignatorMin, DesignatorMax;
127 USHORT DataIndexMin, DataIndexMax;
128 } Range;
129 struct {
130 USAGE Usage, Reserved1;
131 USHORT StringIndex, Reserved2;
132 USHORT DesignatorIndex, Reserved3;
133 USHORT DataIndex, Reserved4;
134 } NotRange;
135 } DUMMYUNIONNAME;
136 } HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
138 typedef struct _HIDP_CAPS {
139 USAGE Usage;
140 USAGE UsagePage;
141 USHORT InputReportByteLength;
142 USHORT OutputReportByteLength;
143 USHORT FeatureReportByteLength;
144 USHORT Reserved[17];
145 USHORT NumberLinkCollectionNodes;
146 USHORT NumberInputButtonCaps;
147 USHORT NumberInputValueCaps;
148 USHORT NumberInputDataIndices;
149 USHORT NumberOutputButtonCaps;
150 USHORT NumberOutputValueCaps;
151 USHORT NumberOutputDataIndices;
152 USHORT NumberFeatureButtonCaps;
153 USHORT NumberFeatureValueCaps;
154 USHORT NumberFeatureDataIndices;
155 } HIDP_CAPS, *PHIDP_CAPS;
157 typedef struct _HIDP_DATA {
158 USHORT DataIndex;
159 USHORT Reserved;
160 _ANONYMOUS_UNION union {
161 ULONG RawValue;
162 BOOLEAN On;
163 } DUMMYUNIONNAME;
164 } HIDP_DATA, *PHIDP_DATA;
166 typedef struct _HIDP_EXTENDED_ATTRIBUTES {
167 UCHAR NumGlobalUnknowns;
168 UCHAR Reserved[3];
169 PHIDP_UNKNOWN_TOKEN GlobalUnknowns;
170 ULONG Data[1];
171 } HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
173 #define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1)
174 #define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0)
176 typedef struct _HIDP_LINK_COLLECTION_NODE {
177 USAGE LinkUsage;
178 USAGE LinkUsagePage;
179 USHORT Parent;
180 USHORT NumberOfChildren;
181 USHORT NextSibling;
182 USHORT FirstChild;
183 ULONG CollectionType: 8;
184 ULONG IsAlias: 1;
185 ULONG Reserved: 23;
186 PVOID UserContext;
187 } HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
189 typedef struct _HIDP_VALUE_CAPS {
190 USAGE UsagePage;
191 UCHAR ReportID;
192 BOOLEAN IsAlias;
193 USHORT BitField;
194 USHORT LinkCollection;
195 USAGE LinkUsage;
196 USAGE LinkUsagePage;
197 BOOLEAN IsRange;
198 BOOLEAN IsStringRange;
199 BOOLEAN IsDesignatorRange;
200 BOOLEAN IsAbsolute;
201 BOOLEAN HasNull;
202 UCHAR Reserved;
203 USHORT BitSize;
204 USHORT ReportCount;
205 USHORT Reserved2[5];
206 ULONG UnitsExp;
207 ULONG Units;
208 LONG LogicalMin, LogicalMax;
209 LONG PhysicalMin, PhysicalMax;
210 _ANONYMOUS_UNION union {
211 struct {
212 USAGE UsageMin, UsageMax;
213 USHORT StringMin, StringMax;
214 USHORT DesignatorMin, DesignatorMax;
215 USHORT DataIndexMin, DataIndexMax;
216 } Range;
217 struct {
218 USAGE Usage, Reserved1;
219 USHORT StringIndex, Reserved2;
220 USHORT DesignatorIndex, Reserved3;
221 USHORT DataIndex, Reserved4;
222 } NotRange;
223 } DUMMYUNIONNAME;
224 } HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
226 typedef enum _HIDP_REPORT_TYPE {
227 HidP_Input,
228 HidP_Output,
229 HidP_Feature
230 } HIDP_REPORT_TYPE;
232 #define FACILITY_HID_ERROR_CODE 0x11
234 #define HIDP_ERROR_CODES(SEV, CODE) \
235 ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
237 #define HIDP_STATUS_SUCCESS (HIDP_ERROR_CODES(0x0, 0))
238 #define HIDP_STATUS_NULL (HIDP_ERROR_CODES(0x8, 1))
239 #define HIDP_STATUS_INVALID_PREPARSED_DATA (HIDP_ERROR_CODES(0xC, 1))
240 #define HIDP_STATUS_INVALID_REPORT_TYPE (HIDP_ERROR_CODES(0xC, 2))
241 #define HIDP_STATUS_INVALID_REPORT_LENGTH (HIDP_ERROR_CODES(0xC, 3))
242 #define HIDP_STATUS_USAGE_NOT_FOUND (HIDP_ERROR_CODES(0xC, 4))
243 #define HIDP_STATUS_VALUE_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 5))
244 #define HIDP_STATUS_BAD_LOG_PHY_VALUES (HIDP_ERROR_CODES(0xC, 6))
245 #define HIDP_STATUS_BUFFER_TOO_SMALL (HIDP_ERROR_CODES(0xC, 7))
246 #define HIDP_STATUS_INTERNAL_ERROR (HIDP_ERROR_CODES(0xC, 8))
247 #define HIDP_STATUS_I8042_TRANS_UNKNOWN (HIDP_ERROR_CODES(0xC, 9))
248 #define HIDP_STATUS_INCOMPATIBLE_REPORT_ID (HIDP_ERROR_CODES(0xC, 0xA))
249 #define HIDP_STATUS_NOT_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xB))
250 #define HIDP_STATUS_IS_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xC))
251 #define HIDP_STATUS_DATA_INDEX_NOT_FOUND (HIDP_ERROR_CODES(0xC, 0xD))
252 #define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
253 #define HIDP_STATUS_BUTTON_NOT_PRESSED (HIDP_ERROR_CODES(0xC, 0xF))
254 #define HIDP_STATUS_REPORT_DOES_NOT_EXIST (HIDP_ERROR_CODES(0xC, 0x10))
255 #define HIDP_STATUS_NOT_IMPLEMENTED (HIDP_ERROR_CODES(0xC, 0x20))
256 #define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN
261 * NTSTATUS
262 * HidP_GetButtonCaps(
263 * IN HIDP_REPORT_TYPE ReportType,
264 * OUT PHIDP_BUTTON_CAPS ButtonCaps,
265 * IN OUT PULONG ButtonCapsLength,
266 * IN PHIDP_PREPARSED_DATA PreparsedData);
268 #define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
269 HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
272 * NTSTATUS
273 * HidP_GetButtons(
274 * IN HIDP_REPORT_TYPE ReportType,
275 * IN USAGE UsagePage,
276 * IN USHORT LinkCollection,
277 * OUT USAGE *UsageList,
278 * IN OUT ULONG *UsageLength,
279 * IN PHIDP_PREPARSED_DATA PreparsedData,
280 * IN PCHAR Report,
281 * IN ULONG ReportLength);
283 #define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
284 HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
286 #define HidP_GetButtonListLength(RTy, UPa, Ppd) \
287 HidP_GetUsageListLength(Rty, UPa, Ppd)
291 * NTSTATUS
292 * HidP_GetButtonsEx(
293 * IN HIDP_REPORT_TYPE ReportType,
294 * IN USHORT LinkCollection,
295 * OUT PUSAGE_AND_PAGE ButtonList,
296 * IN OUT ULONG *UsageLength,
297 * IN PHIDP_PREPARSED_DATA PreparsedData,
298 * IN PCHAR Report,
299 * IN ULONG ReportLength);
301 #define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL) \
302 HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
304 HIDAPI
305 NTSTATUS
306 DDKAPI
307 HidP_GetCaps(
308 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
309 /*OUT*/ PHIDP_CAPS Capabilities);
311 HIDAPI
312 NTSTATUS
313 DDKAPI
314 HidP_GetData(
315 /*IN*/ HIDP_REPORT_TYPE ReportType,
316 /*OUT*/ PHIDP_DATA DataList,
317 /*IN OUT*/ PULONG DataLength,
318 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
319 /*IN*/ PCHAR Report,
320 /*IN*/ ULONG ReportLength);
322 HIDAPI
323 NTSTATUS
324 DDKAPI
325 HidP_GetExtendedAttributes(
326 /*IN*/ HIDP_REPORT_TYPE ReportType,
327 /*IN*/ USHORT DataIndex,
328 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
329 /*OUT*/ PHIDP_EXTENDED_ATTRIBUTES Attributes,
330 /*IN OUT*/ PULONG LengthAttributes);
332 HIDAPI
333 NTSTATUS
334 DDKAPI
335 HidP_GetLinkCollectionNodes(
336 /*OUT*/ PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
337 /*IN OUT*/ PULONG LinkCollectionNodesLength,
338 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
340 HIDAPI
341 NTSTATUS
342 DDKAPI
343 HidP_GetScaledUsageValue(
344 /*IN*/ HIDP_REPORT_TYPE ReportType,
345 /*IN*/ USAGE UsagePage,
346 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
347 /*IN*/ USAGE Usage,
348 /*OUT*/ PLONG UsageValue,
349 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
350 /*IN*/ PCHAR Report,
351 /*IN*/ ULONG ReportLength);
353 HIDAPI
354 NTSTATUS
355 DDKAPI
356 HidP_GetSpecificButtonCaps(
357 /*IN*/ HIDP_REPORT_TYPE ReportType,
358 /*IN*/ USAGE UsagePage,
359 /*IN*/ USHORT LinkCollection,
360 /*IN*/ USAGE Usage,
361 /*OUT*/ PHIDP_BUTTON_CAPS ButtonCaps,
362 /*IN OUT*/ PULONG ButtonCapsLength,
363 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
365 HIDAPI
366 NTSTATUS
367 DDKAPI
368 HidP_GetSpecificValueCaps(
369 /*IN*/ HIDP_REPORT_TYPE ReportType,
370 /*IN*/ USAGE UsagePage,
371 /*IN*/ USHORT LinkCollection,
372 /*IN*/ USAGE Usage,
373 /*OUT*/ PHIDP_VALUE_CAPS ValueCaps,
374 /*IN OUT*/ PULONG ValueCapsLength,
375 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
377 HIDAPI
378 NTSTATUS
379 DDKAPI
380 HidP_GetUsages(
381 /*IN*/ HIDP_REPORT_TYPE ReportType,
382 /*IN*/ USAGE UsagePage,
383 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
384 /*OUT*/ USAGE *UsageList,
385 /*IN OUT*/ ULONG *UsageLength,
386 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
387 /*IN*/ PCHAR Report,
388 /*IN*/ ULONG ReportLength);
390 HIDAPI
391 NTSTATUS
392 DDKAPI
393 HidP_GetUsagesEx(
394 /*IN*/ HIDP_REPORT_TYPE ReportType,
395 /*IN*/ USHORT LinkCollection,
396 /*OUT*/ PUSAGE_AND_PAGE ButtonList,
397 /*IN OUT*/ ULONG *UsageLength,
398 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
399 /*IN*/ PCHAR Report,
400 /*IN*/ ULONG ReportLength);
402 HIDAPI
403 NTSTATUS
404 DDKAPI
405 HidP_GetUsageValue(
406 /*IN*/ HIDP_REPORT_TYPE ReportType,
407 /*IN*/ USAGE UsagePage,
408 /*IN*/ USHORT LinkCollection,
409 /*IN*/ USAGE Usage,
410 /*OUT*/ PULONG UsageValue,
411 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
412 /*IN*/ PCHAR Report,
413 /*IN*/ ULONG ReportLength);
415 HIDAPI
416 NTSTATUS
417 DDKAPI
418 HidP_GetUsageValueArray(
419 /*IN*/ HIDP_REPORT_TYPE ReportType,
420 /*IN*/ USAGE UsagePage,
421 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
422 /*IN*/ USAGE Usage,
423 /*OUT*/ PCHAR UsageValue,
424 /*IN*/ USHORT UsageValueByteLength,
425 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
426 /*IN*/ PCHAR Report,
427 /*IN*/ ULONG ReportLength);
430 * NTSTATUS
431 * HidP_GetValueCaps(
432 * IN HIDP_REPORT_TYPE ReportType,
433 * OUT PHIDP_VALUE_CAPS ValueCaps,
434 * IN OUT PULONG ValueCapsLength,
435 * IN PHIDP_PREPARSED_DATA PreparsedData);
437 #define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
438 HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
440 HIDAPI
441 NTSTATUS
442 DDKAPI
443 HidP_InitializeReportForID(
444 /*IN*/ HIDP_REPORT_TYPE ReportType,
445 /*IN*/ UCHAR ReportID,
446 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
447 /*IN OUT*/ PCHAR Report,
448 /*IN*/ ULONG ReportLength);
451 * BOOLEAN
452 * HidP_IsSameUsageAndPage(
453 * USAGE_AND_PAGE u1,
454 * USAGE_AND_PAGE u2);
456 #define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
458 HIDAPI
459 ULONG
460 DDKAPI
461 HidP_MaxDataListLength(
462 /*IN*/ HIDP_REPORT_TYPE ReportType,
463 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
465 HIDAPI
466 ULONG
467 DDKAPI
468 HidP_MaxUsageListLength(
469 /*IN*/ HIDP_REPORT_TYPE ReportType,
470 /*IN*/ USAGE UsagePage /*OPTIONAL*/,
471 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
474 * NTSTATUS
475 * HidP_SetButtons(
476 * IN HIDP_REPORT_TYPE ReportType,
477 * IN USAGE UsagePage,
478 * IN USHORT LinkCollection,
479 * IN PUSAGE UsageList,
480 * IN OUT PULONG UsageLength,
481 * IN PHIDP_PREPARSED_DATA PreparsedData,
482 * IN OUT PCHAR Report,
483 * IN ULONG ReportLength);
485 #define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
486 HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
488 HIDAPI
489 NTSTATUS
490 DDKAPI
491 HidP_SetData(
492 /*IN*/ HIDP_REPORT_TYPE ReportType,
493 /*IN*/ PHIDP_DATA DataList,
494 /*IN OUT*/ PULONG DataLength,
495 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
496 /*IN OUT*/ PCHAR Report,
497 /*IN*/ ULONG ReportLength);
499 HIDAPI
500 NTSTATUS
501 DDKAPI
502 HidP_SetScaledUsageValue(
503 /*IN*/ HIDP_REPORT_TYPE ReportType,
504 /*IN*/ USAGE UsagePage,
505 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
506 /*IN*/ USAGE Usage,
507 /*IN*/ LONG UsageValue,
508 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
509 /*IN OUT*/ PCHAR Report,
510 /*IN*/ ULONG ReportLength);
512 HIDAPI
513 NTSTATUS
514 DDKAPI
515 HidP_SetUsages(
516 /*IN*/ HIDP_REPORT_TYPE ReportType,
517 /*IN*/ USAGE UsagePage,
518 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
519 /*IN*/ PUSAGE UsageList,
520 /*IN OUT*/ PULONG UsageLength,
521 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
522 /*IN OUT*/ PCHAR Report,
523 /*IN*/ ULONG ReportLength);
525 HIDAPI
526 NTSTATUS
527 DDKAPI
528 HidP_SetUsageValue(
529 /*IN*/ HIDP_REPORT_TYPE ReportType,
530 /*IN*/ USAGE UsagePage,
531 /*IN*/ USHORT LinkCollection,
532 /*IN*/ USAGE Usage,
533 /*IN*/ ULONG UsageValue,
534 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
535 /*IN OUT*/ PCHAR Report,
536 /*IN*/ ULONG ReportLength);
538 HIDAPI
539 NTSTATUS
540 DDKAPI
541 HidP_SetUsageValueArray(
542 /*IN*/ HIDP_REPORT_TYPE ReportType,
543 /*IN*/ USAGE UsagePage,
544 /*IN*/ USHORT LinkCollection /*OPTIONAL*/,
545 /*IN*/ USAGE Usage,
546 /*IN*/ PCHAR UsageValue,
547 /*IN*/ USHORT UsageValueByteLength,
548 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
549 /*OUT*/ PCHAR Report,
550 /*IN*/ ULONG ReportLength);
553 * NTSTATUS
554 * HidP_UnsetButtons(
555 * IN HIDP_REPORT_TYPE ReportType,
556 * IN USAGE UsagePage,
557 * IN USHORT LinkCollection,
558 * IN PUSAGE UsageList,
559 * IN OUT PULONG UsageLength,
560 * IN PHIDP_PREPARSED_DATA PreparsedData,
561 * IN OUT PCHAR Report,
562 * IN ULONG ReportLength);
564 #define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
565 HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
567 HIDAPI
568 NTSTATUS
569 DDKAPI
570 HidP_UnsetUsages(
571 /*IN*/ HIDP_REPORT_TYPE ReportType,
572 /*IN*/ USAGE UsagePage,
573 /*IN*/ USHORT LinkCollection,
574 /*IN*/ PUSAGE UsageList,
575 /*IN OUT*/ PULONG UsageLength,
576 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
577 /*IN OUT*/ PCHAR Report,
578 /*IN*/ ULONG ReportLength);
580 HIDAPI
581 NTSTATUS
582 DDKAPI
583 HidP_UsageAndPageListDifference(
584 /*IN*/ PUSAGE_AND_PAGE PreviousUsageList,
585 /*IN*/ PUSAGE_AND_PAGE CurrentUsageList,
586 /*OUT*/ PUSAGE_AND_PAGE BreakUsageList,
587 /*OUT*/ PUSAGE_AND_PAGE MakeUsageList,
588 /*IN*/ ULONG UsageListLength);
590 HIDAPI
591 NTSTATUS
592 DDKAPI
593 HidP_UsageListDifference(
594 /*IN*/ PUSAGE PreviousUsageList,
595 /*IN*/ PUSAGE CurrentUsageList,
596 /*OUT*/ PUSAGE BreakUsageList,
597 /*OUT*/ PUSAGE MakeUsageList,
598 /*IN*/ ULONG UsageListLength);
600 #ifdef __cplusplus
602 #endif
604 #endif /* __HIDPI_H */