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