1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.libraries alien.syntax
4 classes.struct kernel math windows.types windows.ole32 ;
7 << "hid" "hid.dll" stdcall add-library >>
10 TYPEDEF: LONG NTSTATUS
12 TYPEDEF: USAGE* PUSAGE
14 CONSTANT: HID_USAGE_PAGE_UNDEFINED 0x00
15 CONSTANT: HID_USAGE_PAGE_GENERIC 0x01
16 CONSTANT: HID_USAGE_PAGE_SIMULATION 0x02
17 CONSTANT: HID_USAGE_PAGE_VR 0x03
18 CONSTANT: HID_USAGE_PAGE_SPORT 0x04
19 CONSTANT: HID_USAGE_PAGE_GAME 0x05
20 CONSTANT: HID_USAGE_PAGE_KEYBOARD 0x07
21 CONSTANT: HID_USAGE_PAGE_LED 0x08
22 CONSTANT: HID_USAGE_PAGE_BUTTON 0x09
23 CONSTANT: HID_USAGE_PAGE_ORDINAL 0x0A
24 CONSTANT: HID_USAGE_PAGE_TELEPHONY 0x0B
25 CONSTANT: HID_USAGE_PAGE_CONSUMER 0x0C
26 CONSTANT: HID_USAGE_PAGE_DIGITIZER 0x0D
27 CONSTANT: HID_USAGE_PAGE_UNICODE 0x10
28 CONSTANT: HID_USAGE_PAGE_ALPHANUMERIC 0x14
30 CONSTANT: HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE 0xFFF3
32 CONSTANT: HID_USAGE_GENERIC_POINTER 0x01
33 CONSTANT: HID_USAGE_GENERIC_MOUSE 0x02
34 CONSTANT: HID_USAGE_GENERIC_JOYSTICK 0x04
35 CONSTANT: HID_USAGE_GENERIC_GAMEPAD 0x05
36 CONSTANT: HID_USAGE_GENERIC_KEYBOARD 0x06
37 CONSTANT: HID_USAGE_GENERIC_KEYPAD 0x07
38 CONSTANT: HID_USAGE_GENERIC_SYSTEM_CTL 0x80
40 CONSTANT: HID_USAGE_GENERIC_X 0x30
41 CONSTANT: HID_USAGE_GENERIC_Y 0x31
42 CONSTANT: HID_USAGE_GENERIC_Z 0x32
43 CONSTANT: HID_USAGE_GENERIC_RX 0x33
44 CONSTANT: HID_USAGE_GENERIC_RY 0x34
45 CONSTANT: HID_USAGE_GENERIC_RZ 0x35
46 CONSTANT: HID_USAGE_GENERIC_SLIDER 0x36
47 CONSTANT: HID_USAGE_GENERIC_DIAL 0x37
48 CONSTANT: HID_USAGE_GENERIC_WHEEL 0x38
49 CONSTANT: HID_USAGE_GENERIC_HATSWITCH 0x39
50 CONSTANT: HID_USAGE_GENERIC_COUNTED_BUFFER 0x3A
51 CONSTANT: HID_USAGE_GENERIC_BYTE_COUNT 0x3B
52 CONSTANT: HID_USAGE_GENERIC_MOTION_WAKEUP 0x3C
53 CONSTANT: HID_USAGE_GENERIC_VX 0x40
54 CONSTANT: HID_USAGE_GENERIC_VY 0x41
55 CONSTANT: HID_USAGE_GENERIC_VZ 0x42
56 CONSTANT: HID_USAGE_GENERIC_VBRX 0x43
57 CONSTANT: HID_USAGE_GENERIC_VBRY 0x44
58 CONSTANT: HID_USAGE_GENERIC_VBRZ 0x45
59 CONSTANT: HID_USAGE_GENERIC_VNO 0x46
60 CONSTANT: HID_USAGE_GENERIC_SYSCTL_POWER 0x81
61 CONSTANT: HID_USAGE_GENERIC_SYSCTL_SLEEP 0x82
62 CONSTANT: HID_USAGE_GENERIC_SYSCTL_WAKE 0x83
63 CONSTANT: HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU 0x84
64 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MAIN_MENU 0x85
65 CONSTANT: HID_USAGE_GENERIC_SYSCTL_APP_MENU 0x86
66 CONSTANT: HID_USAGE_GENERIC_SYSCTL_HELP_MENU 0x87
67 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_EXIT 0x88
68 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_SELECT 0x89
69 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT 0x8A
70 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_LEFT 0x8B
71 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_UP 0x8C
72 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_DOWN 0x8D
74 CONSTANT: HID_USAGE_SIMULATION_RUDDER 0xBA
75 CONSTANT: HID_USAGE_SIMULATION_THROTTLE 0xBB
77 CONSTANT: HID_USAGE_KEYBOARD_NOEVENT 0x00
78 CONSTANT: HID_USAGE_KEYBOARD_ROLLOVER 0x01
79 CONSTANT: HID_USAGE_KEYBOARD_POSTFAIL 0x02
80 CONSTANT: HID_USAGE_KEYBOARD_UNDEFINED 0x03
82 CONSTANT: HID_USAGE_KEYBOARD_aA 0x04
83 CONSTANT: HID_USAGE_KEYBOARD_zZ 0x1D
84 CONSTANT: HID_USAGE_KEYBOARD_ONE 0x1E
85 CONSTANT: HID_USAGE_KEYBOARD_ZERO 0x27
86 CONSTANT: HID_USAGE_KEYBOARD_LCTRL 0xE0
87 CONSTANT: HID_USAGE_KEYBOARD_LSHFT 0xE1
88 CONSTANT: HID_USAGE_KEYBOARD_LALT 0xE2
89 CONSTANT: HID_USAGE_KEYBOARD_LGUI 0xE3
90 CONSTANT: HID_USAGE_KEYBOARD_RCTRL 0xE4
91 CONSTANT: HID_USAGE_KEYBOARD_RSHFT 0xE5
92 CONSTANT: HID_USAGE_KEYBOARD_RALT 0xE6
93 CONSTANT: HID_USAGE_KEYBOARD_RGUI 0xE7
94 CONSTANT: HID_USAGE_KEYBOARD_SCROLL_LOCK 0x47
95 CONSTANT: HID_USAGE_KEYBOARD_NUM_LOCK 0x53
96 CONSTANT: HID_USAGE_KEYBOARD_CAPS_LOCK 0x39
97 CONSTANT: HID_USAGE_KEYBOARD_F1 0x3A
98 CONSTANT: HID_USAGE_KEYBOARD_F12 0x45
99 CONSTANT: HID_USAGE_KEYBOARD_RETURN 0x28
100 CONSTANT: HID_USAGE_KEYBOARD_ESCAPE 0x29
101 CONSTANT: HID_USAGE_KEYBOARD_DELETE 0x2A
102 CONSTANT: HID_USAGE_KEYBOARD_PRINT_SCREEN 0x46
104 CONSTANT: HID_USAGE_LED_NUM_LOCK 0x01
105 CONSTANT: HID_USAGE_LED_CAPS_LOCK 0x02
106 CONSTANT: HID_USAGE_LED_SCROLL_LOCK 0x03
107 CONSTANT: HID_USAGE_LED_COMPOSE 0x04
108 CONSTANT: HID_USAGE_LED_KANA 0x05
109 CONSTANT: HID_USAGE_LED_POWER 0x06
110 CONSTANT: HID_USAGE_LED_SHIFT 0x07
111 CONSTANT: HID_USAGE_LED_DO_NOT_DISTURB 0x08
112 CONSTANT: HID_USAGE_LED_MUTE 0x09
113 CONSTANT: HID_USAGE_LED_TONE_ENABLE 0x0A
114 CONSTANT: HID_USAGE_LED_HIGH_CUT_FILTER 0x0B
115 CONSTANT: HID_USAGE_LED_LOW_CUT_FILTER 0x0C
116 CONSTANT: HID_USAGE_LED_EQUALIZER_ENABLE 0x0D
117 CONSTANT: HID_USAGE_LED_SOUND_FIELD_ON 0x0E
118 CONSTANT: HID_USAGE_LED_SURROUND_FIELD_ON 0x0F
119 CONSTANT: HID_USAGE_LED_REPEAT 0x10
120 CONSTANT: HID_USAGE_LED_STEREO 0x11
121 CONSTANT: HID_USAGE_LED_SAMPLING_RATE_DETECT 0x12
122 CONSTANT: HID_USAGE_LED_SPINNING 0x13
123 CONSTANT: HID_USAGE_LED_CAV 0x14
124 CONSTANT: HID_USAGE_LED_CLV 0x15
125 CONSTANT: HID_USAGE_LED_RECORDING_FORMAT_DET 0x16
126 CONSTANT: HID_USAGE_LED_OFF_HOOK 0x17
127 CONSTANT: HID_USAGE_LED_RING 0x18
128 CONSTANT: HID_USAGE_LED_MESSAGE_WAITING 0x19
129 CONSTANT: HID_USAGE_LED_DATA_MODE 0x1A
130 CONSTANT: HID_USAGE_LED_BATTERY_OPERATION 0x1B
131 CONSTANT: HID_USAGE_LED_BATTERY_OK 0x1C
132 CONSTANT: HID_USAGE_LED_BATTERY_LOW 0x1D
133 CONSTANT: HID_USAGE_LED_SPEAKER 0x1E
134 CONSTANT: HID_USAGE_LED_HEAD_SET 0x1F
135 CONSTANT: HID_USAGE_LED_HOLD 0x20
136 CONSTANT: HID_USAGE_LED_MICROPHONE 0x21
137 CONSTANT: HID_USAGE_LED_COVERAGE 0x22
138 CONSTANT: HID_USAGE_LED_NIGHT_MODE 0x23
139 CONSTANT: HID_USAGE_LED_SEND_CALLS 0x24
140 CONSTANT: HID_USAGE_LED_CALL_PICKUP 0x25
141 CONSTANT: HID_USAGE_LED_CONFERENCE 0x26
142 CONSTANT: HID_USAGE_LED_STAND_BY 0x27
143 CONSTANT: HID_USAGE_LED_CAMERA_ON 0x28
144 CONSTANT: HID_USAGE_LED_CAMERA_OFF 0x29
145 CONSTANT: HID_USAGE_LED_ON_LINE 0x2A
146 CONSTANT: HID_USAGE_LED_OFF_LINE 0x2B
147 CONSTANT: HID_USAGE_LED_BUSY 0x2C
148 CONSTANT: HID_USAGE_LED_READY 0x2D
149 CONSTANT: HID_USAGE_LED_PAPER_OUT 0x2E
150 CONSTANT: HID_USAGE_LED_PAPER_JAM 0x2F
151 CONSTANT: HID_USAGE_LED_REMOTE 0x30
152 CONSTANT: HID_USAGE_LED_FORWARD 0x31
153 CONSTANT: HID_USAGE_LED_REVERSE 0x32
154 CONSTANT: HID_USAGE_LED_STOP 0x33
155 CONSTANT: HID_USAGE_LED_REWIND 0x34
156 CONSTANT: HID_USAGE_LED_FAST_FORWARD 0x35
157 CONSTANT: HID_USAGE_LED_PLAY 0x36
158 CONSTANT: HID_USAGE_LED_PAUSE 0x37
159 CONSTANT: HID_USAGE_LED_RECORD 0x38
160 CONSTANT: HID_USAGE_LED_ERROR 0x39
161 CONSTANT: HID_USAGE_LED_SELECTED_INDICATOR 0x3A
162 CONSTANT: HID_USAGE_LED_IN_USE_INDICATOR 0x3B
163 CONSTANT: HID_USAGE_LED_MULTI_MODE_INDICATOR 0x3C
164 CONSTANT: HID_USAGE_LED_INDICATOR_ON 0x3D
165 CONSTANT: HID_USAGE_LED_INDICATOR_FLASH 0x3E
166 CONSTANT: HID_USAGE_LED_INDICATOR_SLOW_BLINK 0x3F
167 CONSTANT: HID_USAGE_LED_INDICATOR_FAST_BLINK 0x40
168 CONSTANT: HID_USAGE_LED_INDICATOR_OFF 0x41
169 CONSTANT: HID_USAGE_LED_FLASH_ON_TIME 0x42
170 CONSTANT: HID_USAGE_LED_SLOW_BLINK_ON_TIME 0x43
171 CONSTANT: HID_USAGE_LED_SLOW_BLINK_OFF_TIME 0x44
172 CONSTANT: HID_USAGE_LED_FAST_BLINK_ON_TIME 0x45
173 CONSTANT: HID_USAGE_LED_FAST_BLINK_OFF_TIME 0x46
174 CONSTANT: HID_USAGE_LED_INDICATOR_COLOR 0x47
175 CONSTANT: HID_USAGE_LED_RED 0x48
176 CONSTANT: HID_USAGE_LED_GREEN 0x49
177 CONSTANT: HID_USAGE_LED_AMBER 0x4A
178 CONSTANT: HID_USAGE_LED_GENERIC_INDICATOR 0x4B
180 CONSTANT: HID_USAGE_TELEPHONY_PHONE 0x01
181 CONSTANT: HID_USAGE_TELEPHONY_ANSWERING_MACHINE 0x02
182 CONSTANT: HID_USAGE_TELEPHONY_MESSAGE_CONTROLS 0x03
183 CONSTANT: HID_USAGE_TELEPHONY_HANDSET 0x04
184 CONSTANT: HID_USAGE_TELEPHONY_HEADSET 0x05
185 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD 0x06
186 CONSTANT: HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON 0x07
187 CONSTANT: HID_USAGE_TELEPHONY_REDIAL 0x24
188 CONSTANT: HID_USAGE_TELEPHONY_TRANSFER 0x25
189 CONSTANT: HID_USAGE_TELEPHONY_DROP 0x26
190 CONSTANT: HID_USAGE_TELEPHONY_LINE 0x2A
191 CONSTANT: HID_USAGE_TELEPHONY_RING_ENABLE 0x2D
192 CONSTANT: HID_USAGE_TELEPHONY_SEND 0x31
193 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_0 0xB0
194 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_D 0xBF
195 CONSTANT: HID_USAGE_TELEPHONY_HOST_AVAILABLE 0xF1
197 CONSTANT: HID_USAGE_MS_BTH_HF_DIALNUMBER 0x21
198 CONSTANT: HID_USAGE_MS_BTH_HF_DIALMEMORY 0x22
200 CONSTANT: HID_USAGE_CONSUMERCTRL 0x01
201 CONSTANT: HID_USAGE_DIGITIZER_PEN 0x02
202 CONSTANT: HID_USAGE_DIGITIZER_IN_RANGE 0x32
203 CONSTANT: HID_USAGE_DIGITIZER_TIP_SWITCH 0x42
204 CONSTANT: HID_USAGE_DIGITIZER_BARREL_SWITCH 0x44
206 CONSTANT: HIDP_LINK_COLLECTION_ROOT -1
207 CONSTANT: HIDP_LINK_COLLECTION_UNSPECIFIED 0
209 ENUM: HIDP_REPORT_TYPE
214 STRUCT: USAGE_AND_PAGE
216 { UsagePage USAGE } ;
217 TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
219 : HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
221 STRUCT: HIDP_BUTTONS_CAPS_range
226 { DesignatorMin USHORT }
227 { DesignatorMax USHORT }
228 { DataIndexMin USHORT }
229 { DataIndexMax USHORT } ;
231 STRUCT: HIDP_BUTTONS_CAPS_not_range
234 { StringIndex USHORT }
236 { DesignatorIndex USHORT }
239 { Reserved4 USHORT } ;
241 UNION-STRUCT: HIDP_BUTTONS_CAPS_union
242 { Range HIDP_BUTTONS_CAPS_range }
243 { NotRange HIDP_BUTTONS_CAPS_not_range } ;
245 STRUCT: HIDP_BUTTON_CAPS
250 { LinkCollection USHORT }
252 { LinkUsagePage USAGE }
254 { IsStringRange BOOLEAN }
255 { IsDesignatorRange BOOLEAN }
256 { IsAbsolute BOOLEAN }
257 { Reserved ULONG[10] }
258 { Union HIDP_BUTTONS_CAPS_union } ;
259 TYPEDEF: HIDP_BUTTON_CAPS* PHIDP_BUTTON_CAPS
261 STRUCT: HIDP_VALUE_CAPS_range
266 { DesignatorMin USHORT }
267 { DesignatorMax USHORT }
268 { DataIndexMin USHORT }
269 { DataIndexMax USHORT } ;
271 STRUCT: HIDP_VALUE_CAPS_not_range
274 { StringIndex USHORT }
276 { DesignatorIndex USHORT }
279 { Reserved4 USHORT } ;
281 UNION-STRUCT: HIDP_VALUE_CAPS_union
282 { Range HIDP_VALUE_CAPS_range }
283 { NotRange HIDP_VALUE_CAPS_not_range } ;
285 STRUCT: HIDP_VALUE_CAPS
290 { LinkCollection USHORT }
292 { LinkUsagePage USAGE }
294 { IsStringRange BOOLEAN }
295 { IsDesignatorRange BOOLEAN }
296 { IsAbsolute BOOLEAN }
300 { ReportCount USHORT }
301 { Reserved2 USHORT[5] }
308 { Union HIDP_VALUE_CAPS_union } ;
309 TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
311 STRUCT: HIDP_LINK_COLLECTION_NODE
313 { LinkUsagePage USAGE }
315 { NumberOfChildren USHORT }
316 { NextSibling USHORT }
317 { FirstChild USHORT }
318 { CollectionTypeIsAliasBitfield ULONG }
319 { UserContext PVOID } ;
320 TYPEDEF: HIDP_LINK_COLLECTION_NODE* PHIDP_LINK_COLLECTION_NODE
322 TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
323 C-TYPE: HIDP_PREPARSED_DATA
324 TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
329 { InputReportByteLength USHORT }
330 { OutputReportByteLength USHORT }
331 { FeatureReportByteLength USHORT }
332 { Reserved USHORT[17] }
333 { NumberLinkCollectionNodes USHORT }
334 { NumberInputButtonCaps USHORT }
335 { NumberInputValueCaps USHORT }
336 { NumberInputDataIndices USHORT }
337 { NumberOutputButtonCaps USHORT }
338 { NumberOutputValueCaps USHORT }
339 { NumberOutputDataIndices USHORT }
340 { NumberFeatureButtonCaps USHORT }
341 { NumberFeatureValueCaps USHORT }
342 { NumberFeatureDataIndices USHORT } ;
343 TYPEDEF: HIDP_CAPS* PHIDP_CAPS
349 TYPEDEF: HIDP_DATA* PHIDP_DATA
351 STRUCT: HIDP_UNKNOWN_TOKEN
353 { Reserved UCHAR[3] }
355 TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
357 STRUCT: HIDP_EXTENDED_ATTRIBUTES
358 { NumGlobalUnknowns UCHAR }
359 { Reserved UCHAR[3] }
360 { GlobalUnknowns PHIDP_UNKNOWN_TOKEN }
362 TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
366 PHIDP_PREPARSED_DATA PreparsedData,
367 PHIDP_CAPS Capabilities
371 HidP_GetLinkCollectionNodes (
372 PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
373 PULONG LinkCollectionNodesLength,
374 PHIDP_PREPARSED_DATA PreparsedData
378 HidP_GetSpecificButtonCaps (
379 HIDP_REPORT_TYPE ReportType,
381 USHORT LinkCollection,
383 PHIDP_BUTTON_CAPS ButtonCaps,
384 PUSHORT ButtonCapsLength,
385 PHIDP_PREPARSED_DATA PreparsedData
390 HIDP_REPORT_TYPE ReportType,
391 PHIDP_BUTTON_CAPS ButtonCaps,
392 PUSHORT ButtonCapsLength,
393 PHIDP_PREPARSED_DATA PreparsedData
397 HidP_GetSpecificValueCaps (
398 HIDP_REPORT_TYPE ReportType,
400 USHORT LinkCollection,
402 PHIDP_VALUE_CAPS ValueCaps,
403 PUSHORT ValueCapsLength,
404 PHIDP_PREPARSED_DATA PreparsedData
409 HIDP_REPORT_TYPE ReportType,
410 PHIDP_VALUE_CAPS ValueCaps,
411 PUSHORT ValueCapsLength,
412 PHIDP_PREPARSED_DATA PreparsedData
416 HidP_GetExtendedAttributes (
417 HIDP_REPORT_TYPE ReportType,
419 PHIDP_PREPARSED_DATA PreparsedData,
420 PHIDP_EXTENDED_ATTRIBUTES Attributes,
421 PULONG LengthAttributes
425 HidP_InitializeReportForID (
426 HIDP_REPORT_TYPE ReportType,
428 PHIDP_PREPARSED_DATA PreparsedData,
435 HIDP_REPORT_TYPE ReportType,
438 PHIDP_PREPARSED_DATA PreparsedData,
445 HIDP_REPORT_TYPE ReportType,
448 PHIDP_PREPARSED_DATA PreparsedData,
454 HidP_MaxDataListLength (
455 HIDP_REPORT_TYPE ReportType,
456 PHIDP_PREPARSED_DATA PreparsedData
461 HIDP_REPORT_TYPE ReportType,
463 USHORT LinkCollection,
466 PHIDP_PREPARSED_DATA PreparsedData,
470 ALIAS: HidP_SetButtons HidP_SetUsages
474 HIDP_REPORT_TYPE ReportType,
476 USHORT LinkCollection,
479 PHIDP_PREPARSED_DATA PreparsedData,
483 ALIAS: HidP_UnsetButtons HidP_UnsetUsages
487 HIDP_REPORT_TYPE ReportType,
489 USHORT LinkCollection,
492 PHIDP_PREPARSED_DATA PreparsedData,
496 ALIAS: HidP_GetButtons HidP_GetUsages
500 HIDP_REPORT_TYPE ReportType,
501 USHORT LinkCollection,
502 PUSAGE_AND_PAGE ButtonList,
504 PHIDP_PREPARSED_DATA PreparsedData,
508 ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
511 HidP_MaxUsageListLength (
512 HIDP_REPORT_TYPE ReportType,
514 PHIDP_PREPARSED_DATA PreparsedData
519 HIDP_REPORT_TYPE ReportType,
521 USHORT LinkCollection,
524 PHIDP_PREPARSED_DATA PreparsedData,
530 HidP_SetScaledUsageValue (
531 HIDP_REPORT_TYPE ReportType,
533 USHORT LinkCollection,
536 PHIDP_PREPARSED_DATA PreparsedData,
542 HidP_SetUsageValueArray (
543 HIDP_REPORT_TYPE ReportType,
545 USHORT LinkCollection,
548 USHORT UsageValueByteLength,
549 PHIDP_PREPARSED_DATA PreparsedData,
557 HIDP_REPORT_TYPE ReportType,
559 USHORT LinkCollection,
562 PHIDP_PREPARSED_DATA PreparsedData,
568 HidP_GetScaledUsageValue (
569 HIDP_REPORT_TYPE ReportType,
571 USHORT LinkCollection,
574 PHIDP_PREPARSED_DATA PreparsedData,
580 HidP_GetUsageValueArray (
581 HIDP_REPORT_TYPE ReportType,
583 USHORT LinkCollection,
586 USHORT UsageValueByteLength,
587 PHIDP_PREPARSED_DATA PreparsedData,
593 HidP_UsageListDifference (
594 PUSAGE PreviousUsageList,
595 PUSAGE CurrentUsageList,
596 PUSAGE BreakUsageList,
597 PUSAGE MakeUsageList,
598 ULONG UsageListLength
602 HidP_UsageAndPageListDifference (
603 PUSAGE_AND_PAGE PreviousUsageList,
604 PUSAGE_AND_PAGE CurrentUsageList,
605 PUSAGE_AND_PAGE BreakUsageList,
606 PUSAGE_AND_PAGE MakeUsageList,
607 ULONG UsageListLength
610 ENUM: HIDP_KEYBOARD_DIRECTION
614 STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
616 TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
618 CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
624 HidP_TranslateUsageAndPagesToI8042ScanCodes (
625 PUSAGE_AND_PAGE ChangedUsageList,
626 ULONG UsageListLength,
627 HIDP_KEYBOARD_DIRECTION KeyAction,
628 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
629 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
630 PVOID InsertCodesContext
635 HidP_TranslateUsagesToI8042ScanCodes (
636 PUSAGE ChangedUsageList,
637 ULONG UsageListLength,
638 HIDP_KEYBOARD_DIRECTION KeyAction,
639 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
640 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
641 PVOID InsertCodesContext
644 CONSTANT: FACILITY_HID_ERROR_CODE 0x11
645 : HIDP_ERROR_CODES ( SEV CODE -- HRESULT )
646 [ 28 shift ] dip bitor FACILITY_HID_ERROR_CODE 16 shift bitor ; inline
647 : HIDP_STATUS_SUCCESS ( -- HRESULT ) 0x0 0x0 HIDP_ERROR_CODES ; inline
648 : HIDP_STATUS_NULL ( -- HRESULT ) 0x8 0x1 HIDP_ERROR_CODES ; inline
649 : HIDP_STATUS_INVALID_PREPARSED_DATA ( -- HRESULT ) 0xC 0x1 HIDP_ERROR_CODES ; inline
650 : HIDP_STATUS_INVALID_REPORT_TYPE ( -- HRESULT ) 0xC 0x2 HIDP_ERROR_CODES ; inline
651 : HIDP_STATUS_INVALID_REPORT_LENGTH ( -- HRESULT ) 0xC 0x3 HIDP_ERROR_CODES ; inline
652 : HIDP_STATUS_USAGE_NOT_FOUND ( -- HRESULT ) 0xC 0x4 HIDP_ERROR_CODES ; inline
653 : HIDP_STATUS_VALUE_OUT_OF_RANGE ( -- HRESULT ) 0xC 0x5 HIDP_ERROR_CODES ; inline
654 : HIDP_STATUS_BAD_LOG_PHY_VALUES ( -- HRESULT ) 0xC 0x6 HIDP_ERROR_CODES ; inline
655 : HIDP_STATUS_BUFFER_TOO_SMALL ( -- HRESULT ) 0xC 0x7 HIDP_ERROR_CODES ; inline
656 : HIDP_STATUS_INTERNAL_ERROR ( -- HRESULT ) 0xC 0x8 HIDP_ERROR_CODES ; inline
657 : HIDP_STATUS_I8042_TRANS_UNKNOWN ( -- HRESULT ) 0xC 0x9 HIDP_ERROR_CODES ; inline
658 : HIDP_STATUS_INCOMPATIBLE_REPORT_ID ( -- HRESULT ) 0xC 0xA HIDP_ERROR_CODES ; inline
659 : HIDP_STATUS_NOT_VALUE_ARRAY ( -- HRESULT ) 0xC 0xB HIDP_ERROR_CODES ; inline
660 : HIDP_STATUS_IS_VALUE_ARRAY ( -- HRESULT ) 0xC 0xC HIDP_ERROR_CODES ; inline
661 : HIDP_STATUS_DATA_INDEX_NOT_FOUND ( -- HRESULT ) 0xC 0xD HIDP_ERROR_CODES ; inline
662 : HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE ( -- HRESULT ) 0xC 0xE HIDP_ERROR_CODES ; inline
663 : HIDP_STATUS_BUTTON_NOT_PRESSED ( -- HRESULT ) 0xC 0xF HIDP_ERROR_CODES ; inline
664 : HIDP_STATUS_REPORT_DOES_NOT_EXIST ( -- HRESULT ) 0xC 0x10 HIDP_ERROR_CODES ; inline
665 : HIDP_STATUS_NOT_IMPLEMENTED ( -- HRESULT ) 0xC 0x20 HIDP_ERROR_CODES ; inline
666 : HIDP_STATUS_I8242_TRANS_UNKNOWN ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
668 STRUCT: HIDD_CONFIGURATION
671 { RingBufferSize ULONG } ;
672 TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
674 STRUCT: HIDD_ATTRIBUTES
678 { VersionNumber USHORT } ;
679 TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
683 HANDLE HidDeviceObject,
684 PHIDD_ATTRIBUTES Attributes
693 HidD_GetPreparsedData (
694 HANDLE HidDeviceObject,
695 PHIDP_PREPARSED_DATA* PreparsedData
699 HidD_FreePreparsedData (
700 PHIDP_PREPARSED_DATA PreparsedData
705 HANDLE HidDeviceObject
709 HidD_GetConfiguration (
710 HANDLE HidDeviceObject,
711 PHIDD_CONFIGURATION Configuration,
712 ULONG ConfigurationLength
716 HidD_SetConfiguration (
717 HANDLE HidDeviceObject,
718 PHIDD_CONFIGURATION Configuration,
719 ULONG ConfigurationLength
724 HANDLE HidDeviceObject,
726 ULONG ReportBufferLength
731 HANDLE HidDeviceObject,
733 ULONG ReportBufferLength
737 HidD_GetInputReport (
738 HANDLE HidDeviceObject,
740 ULONG ReportBufferLength
744 HidD_SetOutputReport (
745 HANDLE HidDeviceObject,
747 ULONG ReportBufferLength
751 HidD_GetNumInputBuffers (
752 HANDLE HidDeviceObject,
757 HidD_SetNumInputBuffers (
758 HANDLE HidDeviceObject,
763 HidD_GetPhysicalDescriptor (
764 HANDLE HidDeviceObject,
770 HidD_GetManufacturerString (
771 HANDLE HidDeviceObject,
777 HidD_GetProductString (
778 HANDLE HidDeviceObject,
784 HidD_GetIndexedString (
785 HANDLE HidDeviceObject,
792 HidD_GetSerialNumberString (
793 HANDLE HidDeviceObject,
799 HidD_GetMsGenreDescriptor (
800 HANDLE HidDeviceObject,