ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MinGW/include/ddk/hidpi.h
Revision: 1046
Committed: Mon Aug 29 13:19:38 2016 UTC (9 years, 2 months ago) by alloc
Content type: text/x-chdr
File size: 15898 byte(s)
Log Message:
Daodan: Added Windows MinGW and build batch file

File Contents

# Content
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 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);
97
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);
108
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;
137
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;
156
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;
165
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;
172
173 #define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1)
174 #define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0)
175
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;
188
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;
225
226 typedef enum _HIDP_REPORT_TYPE {
227 HidP_Input,
228 HidP_Output,
229 HidP_Feature
230 } HIDP_REPORT_TYPE;
231
232 #define FACILITY_HID_ERROR_CODE 0x11
233
234 #define HIDP_ERROR_CODES(SEV, CODE) \
235 ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
236
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
257
258
259
260 /*
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);
267 */
268 #define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
269 HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
270
271 /*
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);
282 */
283 #define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
284 HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
285
286 #define HidP_GetButtonListLength(RTy, UPa, Ppd) \
287 HidP_GetUsageListLength(Rty, UPa, Ppd)
288
289
290 /*
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);
300 */
301 #define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL) \
302 HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
303
304 HIDAPI
305 NTSTATUS
306 DDKAPI
307 HidP_GetCaps(
308 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData,
309 /*OUT*/ PHIDP_CAPS Capabilities);
310
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);
321
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);
331
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);
339
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);
352
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);
364
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);
376
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);
389
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);
401
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);
414
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);
428
429 /*
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);
436 */
437 #define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
438 HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
439
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);
449
450 /*
451 * BOOLEAN
452 * HidP_IsSameUsageAndPage(
453 * USAGE_AND_PAGE u1,
454 * USAGE_AND_PAGE u2);
455 */
456 #define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
457
458 HIDAPI
459 ULONG
460 DDKAPI
461 HidP_MaxDataListLength(
462 /*IN*/ HIDP_REPORT_TYPE ReportType,
463 /*IN*/ PHIDP_PREPARSED_DATA PreparsedData);
464
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);
472
473 /*
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);
484 */
485 #define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
486 HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
487
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);
498
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);
511
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);
524
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);
537
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);
551
552 /*
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);
563 */
564 #define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
565 HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
566
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);
579
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);
589
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);
599
600 #ifdef __cplusplus
601 }
602 #endif
603
604 #endif /* __HIDPI_H */