]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/ddk/hid/hid.factor
Bindings to the HID portion of the Windows DDK.
[factor.git] / basis / windows / ddk / hid / hid.factor
1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.libraries alien.syntax classes.struct
4 kernel math windows.types windows.ole32 ;
5 IN: windows.ddk.hid
6
7 << "hid" "hid.dll" "stdcall" add-library >>
8 LIBRARY: hid
9
10 TYPEDEF: LONG   NTSTATUS
11 TYPEDEF: USHORT USAGE
12 TYPEDEF: USAGE* PUSAGE
13
14 CONSTANT: HID_USAGE_PAGE_UNDEFINED      HEX: 00
15 CONSTANT: HID_USAGE_PAGE_GENERIC        HEX: 01
16 CONSTANT: HID_USAGE_PAGE_SIMULATION     HEX: 02
17 CONSTANT: HID_USAGE_PAGE_VR             HEX: 03
18 CONSTANT: HID_USAGE_PAGE_SPORT          HEX: 04
19 CONSTANT: HID_USAGE_PAGE_GAME           HEX: 05
20 CONSTANT: HID_USAGE_PAGE_KEYBOARD       HEX: 07
21 CONSTANT: HID_USAGE_PAGE_LED            HEX: 08
22 CONSTANT: HID_USAGE_PAGE_BUTTON         HEX: 09
23 CONSTANT: HID_USAGE_PAGE_ORDINAL        HEX: 0A
24 CONSTANT: HID_USAGE_PAGE_TELEPHONY      HEX: 0B
25 CONSTANT: HID_USAGE_PAGE_CONSUMER       HEX: 0C
26 CONSTANT: HID_USAGE_PAGE_DIGITIZER      HEX: 0D
27 CONSTANT: HID_USAGE_PAGE_UNICODE        HEX: 10
28 CONSTANT: HID_USAGE_PAGE_ALPHANUMERIC   HEX: 14
29
30 CONSTANT: HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE  HEX: FFF3
31
32 CONSTANT: HID_USAGE_GENERIC_POINTER      HEX: 01
33 CONSTANT: HID_USAGE_GENERIC_MOUSE        HEX: 02
34 CONSTANT: HID_USAGE_GENERIC_JOYSTICK     HEX: 04
35 CONSTANT: HID_USAGE_GENERIC_GAMEPAD      HEX: 05
36 CONSTANT: HID_USAGE_GENERIC_KEYBOARD     HEX: 06
37 CONSTANT: HID_USAGE_GENERIC_KEYPAD       HEX: 07
38 CONSTANT: HID_USAGE_GENERIC_SYSTEM_CTL   HEX: 80
39
40 CONSTANT: HID_USAGE_GENERIC_X                        HEX: 30
41 CONSTANT: HID_USAGE_GENERIC_Y                        HEX: 31
42 CONSTANT: HID_USAGE_GENERIC_Z                        HEX: 32
43 CONSTANT: HID_USAGE_GENERIC_RX                       HEX: 33
44 CONSTANT: HID_USAGE_GENERIC_RY                       HEX: 34
45 CONSTANT: HID_USAGE_GENERIC_RZ                       HEX: 35
46 CONSTANT: HID_USAGE_GENERIC_SLIDER                   HEX: 36
47 CONSTANT: HID_USAGE_GENERIC_DIAL                     HEX: 37
48 CONSTANT: HID_USAGE_GENERIC_WHEEL                    HEX: 38
49 CONSTANT: HID_USAGE_GENERIC_HATSWITCH                HEX: 39
50 CONSTANT: HID_USAGE_GENERIC_COUNTED_BUFFER           HEX: 3A
51 CONSTANT: HID_USAGE_GENERIC_BYTE_COUNT               HEX: 3B
52 CONSTANT: HID_USAGE_GENERIC_MOTION_WAKEUP            HEX: 3C
53 CONSTANT: HID_USAGE_GENERIC_VX                       HEX: 40
54 CONSTANT: HID_USAGE_GENERIC_VY                       HEX: 41
55 CONSTANT: HID_USAGE_GENERIC_VZ                       HEX: 42
56 CONSTANT: HID_USAGE_GENERIC_VBRX                     HEX: 43
57 CONSTANT: HID_USAGE_GENERIC_VBRY                     HEX: 44
58 CONSTANT: HID_USAGE_GENERIC_VBRZ                     HEX: 45
59 CONSTANT: HID_USAGE_GENERIC_VNO                      HEX: 46
60 CONSTANT: HID_USAGE_GENERIC_SYSCTL_POWER             HEX: 81
61 CONSTANT: HID_USAGE_GENERIC_SYSCTL_SLEEP             HEX: 82
62 CONSTANT: HID_USAGE_GENERIC_SYSCTL_WAKE              HEX: 83
63 CONSTANT: HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU      HEX: 84
64 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MAIN_MENU         HEX: 85
65 CONSTANT: HID_USAGE_GENERIC_SYSCTL_APP_MENU          HEX: 86
66 CONSTANT: HID_USAGE_GENERIC_SYSCTL_HELP_MENU         HEX: 87
67 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_EXIT         HEX: 88
68 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_SELECT       HEX: 89
69 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT        HEX: 8A
70 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_LEFT         HEX: 8B
71 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_UP           HEX: 8C
72 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_DOWN         HEX: 8D
73
74 CONSTANT: HID_USAGE_SIMULATION_RUDDER                HEX: BA
75 CONSTANT: HID_USAGE_SIMULATION_THROTTLE              HEX: BB
76
77 CONSTANT: HID_USAGE_KEYBOARD_NOEVENT     HEX: 00
78 CONSTANT: HID_USAGE_KEYBOARD_ROLLOVER    HEX: 01
79 CONSTANT: HID_USAGE_KEYBOARD_POSTFAIL    HEX: 02
80 CONSTANT: HID_USAGE_KEYBOARD_UNDEFINED   HEX: 03
81
82 CONSTANT: HID_USAGE_KEYBOARD_aA          HEX: 04
83 CONSTANT: HID_USAGE_KEYBOARD_zZ          HEX: 1D
84 CONSTANT: HID_USAGE_KEYBOARD_ONE         HEX: 1E
85 CONSTANT: HID_USAGE_KEYBOARD_ZERO        HEX: 27
86 CONSTANT: HID_USAGE_KEYBOARD_LCTRL       HEX: E0
87 CONSTANT: HID_USAGE_KEYBOARD_LSHFT       HEX: E1
88 CONSTANT: HID_USAGE_KEYBOARD_LALT        HEX: E2
89 CONSTANT: HID_USAGE_KEYBOARD_LGUI        HEX: E3
90 CONSTANT: HID_USAGE_KEYBOARD_RCTRL       HEX: E4
91 CONSTANT: HID_USAGE_KEYBOARD_RSHFT       HEX: E5
92 CONSTANT: HID_USAGE_KEYBOARD_RALT        HEX: E6
93 CONSTANT: HID_USAGE_KEYBOARD_RGUI        HEX: E7
94 CONSTANT: HID_USAGE_KEYBOARD_SCROLL_LOCK HEX: 47
95 CONSTANT: HID_USAGE_KEYBOARD_NUM_LOCK    HEX: 53
96 CONSTANT: HID_USAGE_KEYBOARD_CAPS_LOCK   HEX: 39
97 CONSTANT: HID_USAGE_KEYBOARD_F1          HEX: 3A
98 CONSTANT: HID_USAGE_KEYBOARD_F12         HEX: 45
99 CONSTANT: HID_USAGE_KEYBOARD_RETURN      HEX: 28
100 CONSTANT: HID_USAGE_KEYBOARD_ESCAPE      HEX: 29
101 CONSTANT: HID_USAGE_KEYBOARD_DELETE      HEX: 2A
102 CONSTANT: HID_USAGE_KEYBOARD_PRINT_SCREEN HEX: 46
103
104 CONSTANT: HID_USAGE_LED_NUM_LOCK               HEX: 01
105 CONSTANT: HID_USAGE_LED_CAPS_LOCK              HEX: 02
106 CONSTANT: HID_USAGE_LED_SCROLL_LOCK            HEX: 03
107 CONSTANT: HID_USAGE_LED_COMPOSE                HEX: 04
108 CONSTANT: HID_USAGE_LED_KANA                   HEX: 05
109 CONSTANT: HID_USAGE_LED_POWER                  HEX: 06
110 CONSTANT: HID_USAGE_LED_SHIFT                  HEX: 07
111 CONSTANT: HID_USAGE_LED_DO_NOT_DISTURB         HEX: 08
112 CONSTANT: HID_USAGE_LED_MUTE                   HEX: 09
113 CONSTANT: HID_USAGE_LED_TONE_ENABLE            HEX: 0A
114 CONSTANT: HID_USAGE_LED_HIGH_CUT_FILTER        HEX: 0B
115 CONSTANT: HID_USAGE_LED_LOW_CUT_FILTER         HEX: 0C
116 CONSTANT: HID_USAGE_LED_EQUALIZER_ENABLE       HEX: 0D
117 CONSTANT: HID_USAGE_LED_SOUND_FIELD_ON         HEX: 0E
118 CONSTANT: HID_USAGE_LED_SURROUND_FIELD_ON      HEX: 0F
119 CONSTANT: HID_USAGE_LED_REPEAT                 HEX: 10
120 CONSTANT: HID_USAGE_LED_STEREO                 HEX: 11
121 CONSTANT: HID_USAGE_LED_SAMPLING_RATE_DETECT   HEX: 12
122 CONSTANT: HID_USAGE_LED_SPINNING               HEX: 13
123 CONSTANT: HID_USAGE_LED_CAV                    HEX: 14
124 CONSTANT: HID_USAGE_LED_CLV                    HEX: 15
125 CONSTANT: HID_USAGE_LED_RECORDING_FORMAT_DET   HEX: 16
126 CONSTANT: HID_USAGE_LED_OFF_HOOK               HEX: 17
127 CONSTANT: HID_USAGE_LED_RING                   HEX: 18
128 CONSTANT: HID_USAGE_LED_MESSAGE_WAITING        HEX: 19
129 CONSTANT: HID_USAGE_LED_DATA_MODE              HEX: 1A
130 CONSTANT: HID_USAGE_LED_BATTERY_OPERATION      HEX: 1B
131 CONSTANT: HID_USAGE_LED_BATTERY_OK             HEX: 1C
132 CONSTANT: HID_USAGE_LED_BATTERY_LOW            HEX: 1D
133 CONSTANT: HID_USAGE_LED_SPEAKER                HEX: 1E
134 CONSTANT: HID_USAGE_LED_HEAD_SET               HEX: 1F
135 CONSTANT: HID_USAGE_LED_HOLD                   HEX: 20
136 CONSTANT: HID_USAGE_LED_MICROPHONE             HEX: 21
137 CONSTANT: HID_USAGE_LED_COVERAGE               HEX: 22
138 CONSTANT: HID_USAGE_LED_NIGHT_MODE             HEX: 23
139 CONSTANT: HID_USAGE_LED_SEND_CALLS             HEX: 24
140 CONSTANT: HID_USAGE_LED_CALL_PICKUP            HEX: 25
141 CONSTANT: HID_USAGE_LED_CONFERENCE             HEX: 26
142 CONSTANT: HID_USAGE_LED_STAND_BY               HEX: 27
143 CONSTANT: HID_USAGE_LED_CAMERA_ON              HEX: 28
144 CONSTANT: HID_USAGE_LED_CAMERA_OFF             HEX: 29
145 CONSTANT: HID_USAGE_LED_ON_LINE                HEX: 2A
146 CONSTANT: HID_USAGE_LED_OFF_LINE               HEX: 2B
147 CONSTANT: HID_USAGE_LED_BUSY                   HEX: 2C
148 CONSTANT: HID_USAGE_LED_READY                  HEX: 2D
149 CONSTANT: HID_USAGE_LED_PAPER_OUT              HEX: 2E
150 CONSTANT: HID_USAGE_LED_PAPER_JAM              HEX: 2F
151 CONSTANT: HID_USAGE_LED_REMOTE                 HEX: 30
152 CONSTANT: HID_USAGE_LED_FORWARD                HEX: 31
153 CONSTANT: HID_USAGE_LED_REVERSE                HEX: 32
154 CONSTANT: HID_USAGE_LED_STOP                   HEX: 33
155 CONSTANT: HID_USAGE_LED_REWIND                 HEX: 34
156 CONSTANT: HID_USAGE_LED_FAST_FORWARD           HEX: 35
157 CONSTANT: HID_USAGE_LED_PLAY                   HEX: 36
158 CONSTANT: HID_USAGE_LED_PAUSE                  HEX: 37
159 CONSTANT: HID_USAGE_LED_RECORD                 HEX: 38
160 CONSTANT: HID_USAGE_LED_ERROR                  HEX: 39
161 CONSTANT: HID_USAGE_LED_SELECTED_INDICATOR     HEX: 3A
162 CONSTANT: HID_USAGE_LED_IN_USE_INDICATOR       HEX: 3B
163 CONSTANT: HID_USAGE_LED_MULTI_MODE_INDICATOR   HEX: 3C
164 CONSTANT: HID_USAGE_LED_INDICATOR_ON           HEX: 3D
165 CONSTANT: HID_USAGE_LED_INDICATOR_FLASH        HEX: 3E
166 CONSTANT: HID_USAGE_LED_INDICATOR_SLOW_BLINK   HEX: 3F
167 CONSTANT: HID_USAGE_LED_INDICATOR_FAST_BLINK   HEX: 40
168 CONSTANT: HID_USAGE_LED_INDICATOR_OFF          HEX: 41
169 CONSTANT: HID_USAGE_LED_FLASH_ON_TIME          HEX: 42
170 CONSTANT: HID_USAGE_LED_SLOW_BLINK_ON_TIME     HEX: 43
171 CONSTANT: HID_USAGE_LED_SLOW_BLINK_OFF_TIME    HEX: 44
172 CONSTANT: HID_USAGE_LED_FAST_BLINK_ON_TIME     HEX: 45
173 CONSTANT: HID_USAGE_LED_FAST_BLINK_OFF_TIME    HEX: 46
174 CONSTANT: HID_USAGE_LED_INDICATOR_COLOR        HEX: 47
175 CONSTANT: HID_USAGE_LED_RED                    HEX: 48
176 CONSTANT: HID_USAGE_LED_GREEN                  HEX: 49
177 CONSTANT: HID_USAGE_LED_AMBER                  HEX: 4A
178 CONSTANT: HID_USAGE_LED_GENERIC_INDICATOR      HEX: 4B
179
180 CONSTANT: HID_USAGE_TELEPHONY_PHONE                  HEX: 01
181 CONSTANT: HID_USAGE_TELEPHONY_ANSWERING_MACHINE      HEX: 02
182 CONSTANT: HID_USAGE_TELEPHONY_MESSAGE_CONTROLS       HEX: 03
183 CONSTANT: HID_USAGE_TELEPHONY_HANDSET                HEX: 04
184 CONSTANT: HID_USAGE_TELEPHONY_HEADSET                HEX: 05
185 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD                 HEX: 06
186 CONSTANT: HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON    HEX: 07
187 CONSTANT: HID_USAGE_TELEPHONY_REDIAL                 HEX: 24
188 CONSTANT: HID_USAGE_TELEPHONY_TRANSFER               HEX: 25
189 CONSTANT: HID_USAGE_TELEPHONY_DROP                   HEX: 26
190 CONSTANT: HID_USAGE_TELEPHONY_LINE                   HEX: 2A
191 CONSTANT: HID_USAGE_TELEPHONY_RING_ENABLE            HEX: 2D
192 CONSTANT: HID_USAGE_TELEPHONY_SEND                   HEX: 31
193 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_0               HEX: B0
194 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_D               HEX: BF
195 CONSTANT: HID_USAGE_TELEPHONY_HOST_AVAILABLE         HEX: F1
196
197 CONSTANT: HID_USAGE_MS_BTH_HF_DIALNUMBER             HEX: 21
198 CONSTANT: HID_USAGE_MS_BTH_HF_DIALMEMORY             HEX: 22
199
200 CONSTANT: HID_USAGE_CONSUMERCTRL          HEX: 01
201 CONSTANT: HID_USAGE_DIGITIZER_PEN         HEX: 02
202 CONSTANT: HID_USAGE_DIGITIZER_IN_RANGE    HEX: 32
203 CONSTANT: HID_USAGE_DIGITIZER_TIP_SWITCH  HEX: 42
204 CONSTANT: HID_USAGE_DIGITIZER_BARREL_SWITCH HEX: 44
205
206 CONSTANT: HIDP_LINK_COLLECTION_ROOT        -1
207 CONSTANT: HIDP_LINK_COLLECTION_UNSPECIFIED 0
208
209 C-ENUM:
210     HidP_Input
211     HidP_Output
212     HidP_Feature ;
213 TYPEDEF: int HIDP_REPORT_TYPE
214
215 STRUCT: USAGE_AND_PAGE
216     { Usage     USAGE }
217     { UsagePage USAGE } ;
218 TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
219
220 : HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
221
222 STRUCT: HIDP_BUTTONS_CAPS_range
223     { UsageMin        USAGE  }
224     { UsageMax        USAGE  }
225     { StringMin       USHORT }
226     { StringMax       USHORT }
227     { DesignatorMin   USHORT }
228     { DesignatorMax   USHORT }
229     { DataIndexMin    USHORT }
230     { DataIndexMax    USHORT } ;
231
232 STRUCT: HIDP_BUTTONS_CAPS_not_range
233     { Usage           USAGE  }
234     { Reserved1       USAGE  }
235     { StringIndex     USHORT }
236     { Reserved2       USHORT }
237     { DesignatorIndex USHORT }
238     { Reserved3       USHORT }
239     { DataIndex       USHORT }
240     { Reserved4       USHORT } ;
241
242 UNION-STRUCT: HIDP_BUTTONS_CAPS_union
243     { Range    HIDP_BUTTONS_CAPS_range     }
244     { NotRange HIDP_BUTTONS_CAPS_not_range } ;
245
246 STRUCT: HIDP_BUTTON_CAPS
247     { UsagePage          USAGE                   }
248     { ReportID           UCHAR                   }
249     { IsAlias            BOOLEAN                 }
250     { BitField           USHORT                  }
251     { LinkCollection     USHORT                  }
252     { LinkUsage          USAGE                   }
253     { LinkUsagePage      USAGE                   }
254     { IsRange            BOOLEAN                 }
255     { IsStringRange      BOOLEAN                 }
256     { IsDesignatorRange  BOOLEAN                 }
257     { IsAbsolute         BOOLEAN                 }
258     { Reserved           ULONG[10]               }
259     { Union              HIDP_BUTTONS_CAPS_union } ;
260 TYPEDEF: HIDP_BUTTON_CAPS* PHIDP_BUTTON_CAPS
261
262 STRUCT: HIDP_VALUE_CAPS_range
263     { UsageMin        USAGE  }
264     { UsageMax        USAGE  }
265     { StringMin       USHORT }
266     { StringMax       USHORT }
267     { DesignatorMin   USHORT }
268     { DesignatorMax   USHORT }
269     { DataIndexMin    USHORT }
270     { DataIndexMax    USHORT } ;
271
272 STRUCT: HIDP_VALUE_CAPS_not_range
273     { Usage             USAGE  }
274     { Reserved1         USAGE  }
275     { StringIndex       USHORT }
276     { Reserved2         USHORT }
277     { DesignatorIndex   USHORT }
278     { Reserved3         USHORT }
279     { DataIndex         USHORT }
280     { Reserved4         USHORT } ;
281
282 UNION-STRUCT: HIDP_VALUE_CAPS_union
283     { Range    HIDP_VALUE_CAPS_range     }
284     { NotRange HIDP_VALUE_CAPS_not_range } ;
285
286 STRUCT: HIDP_VALUE_CAPS
287     { UsagePage          USAGE                  }
288     { ReportID           UCHAR                  }
289     { IsAlias            BOOLEAN                }
290     { BitField           USHORT                 }
291     { LinkCollection     USHORT                 }
292     { LinkUsage          USAGE                  }
293     { LinkUsagePage      USAGE                  }
294     { IsRange            BOOLEAN                }
295     { IsStringRange      BOOLEAN                }
296     { IsDesignatorRange  BOOLEAN                }
297     { IsAbsolute         BOOLEAN                }
298     { HasNull            BOOLEAN                }
299     { Reserved           UCHAR                  }
300     { BitSize            USHORT                 }
301     { ReportCount        USHORT                 }
302     { Reserved2          USHORT[5]              }
303     { UnitsExp           ULONG                  }
304     { Units              ULONG                  }
305     { LogicalMin         LONG                   }
306     { LogicalMax         LONG                   }
307     { PhysicalMin        LONG                   }
308     { PhysicalMax        LONG                   }
309     { Union              HIDP_VALUE_CAPS_union  } ;
310 TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
311
312 STRUCT: HIDP_LINK_COLLECTION_NODE
313     { LinkUsage                        USAGE  }
314     { LinkUsagePage                    USAGE  }
315     { Parent                           USHORT }
316     { NumberOfChildren                 USHORT }
317     { NextSibling                      USHORT }
318     { FirstChild                       USHORT }
319     { CollectionTypeIsAliasBitfield    ULONG  }
320     { UserContext                      PVOID  } ;
321 TYPEDEF: HIDP_LINK_COLLECTION_NODE* PHIDP_LINK_COLLECTION_NODE
322
323 TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
324 C-TYPE: HIDP_PREPARSED_DATA
325 TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
326
327 STRUCT: HIDP_CAPS
328     { Usage                       USAGE      }
329     { UsagePage                   USAGE      }
330     { InputReportByteLength       USHORT     }
331     { OutputReportByteLength      USHORT     }
332     { FeatureReportByteLength     USHORT     }
333     { Reserved                    USHORT[17] }
334     { NumberLinkCollectionNodes   USHORT     }
335     { NumberInputButtonCaps       USHORT     }
336     { NumberInputValueCaps        USHORT     }
337     { NumberInputDataIndices      USHORT     }
338     { NumberOutputButtonCaps      USHORT     }
339     { NumberOutputValueCaps       USHORT     }
340     { NumberOutputDataIndices     USHORT     }
341     { NumberFeatureButtonCaps     USHORT     }
342     { NumberFeatureValueCaps      USHORT     }
343     { NumberFeatureDataIndices    USHORT     } ;
344 TYPEDEF: HIDP_CAPS* PHIDP_CAPS
345
346 STRUCT: HIDP_DATA
347     { DataIndex  USHORT }
348     { Reserved   USHORT }
349     { RawValue   ULONG  } ;
350 TYPEDEF: HIDP_DATA* PHIDP_DATA
351
352 STRUCT: HIDP_UNKNOWN_TOKEN
353     { Token     UCHAR    }
354     { Reserved  UCHAR[3] }
355     { BitField  ULONG    } ;
356 TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
357
358 STRUCT: HIDP_EXTENDED_ATTRIBUTES
359     { NumGlobalUnknowns   UCHAR               }
360     { Reserved            UCHAR[3]            }
361     { GlobalUnknowns      PHIDP_UNKNOWN_TOKEN }
362     { Data                ULONG[1]            } ;
363 TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
364
365 FUNCTION: NTSTATUS
366 HidP_GetCaps (
367    PHIDP_PREPARSED_DATA      PreparsedData,
368    PHIDP_CAPS                Capabilities
369    ) ;
370
371 FUNCTION: NTSTATUS
372 HidP_GetLinkCollectionNodes (
373    PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
374    PULONG                     LinkCollectionNodesLength,
375    PHIDP_PREPARSED_DATA       PreparsedData
376    ) ;
377
378 FUNCTION: NTSTATUS
379 HidP_GetSpecificButtonCaps (
380    HIDP_REPORT_TYPE     ReportType,
381    USAGE                UsagePage,
382    USHORT               LinkCollection,
383    USAGE                Usage,
384    PHIDP_BUTTON_CAPS    ButtonCaps,
385    PUSHORT              ButtonCapsLength,
386    PHIDP_PREPARSED_DATA PreparsedData
387    ) ;
388
389 FUNCTION: NTSTATUS
390 HidP_GetButtonCaps (
391    HIDP_REPORT_TYPE     ReportType,
392    PHIDP_BUTTON_CAPS    ButtonCaps,
393    PUSHORT              ButtonCapsLength,
394    PHIDP_PREPARSED_DATA PreparsedData
395 ) ;
396
397 FUNCTION: NTSTATUS
398 HidP_GetSpecificValueCaps (
399    HIDP_REPORT_TYPE     ReportType,
400    USAGE                UsagePage,
401    USHORT               LinkCollection,
402    USAGE                Usage,
403    PHIDP_VALUE_CAPS     ValueCaps,
404    PUSHORT              ValueCapsLength,
405    PHIDP_PREPARSED_DATA PreparsedData
406    ) ;
407
408 FUNCTION: NTSTATUS
409 HidP_GetValueCaps (
410    HIDP_REPORT_TYPE     ReportType,
411    PHIDP_VALUE_CAPS     ValueCaps,
412    PUSHORT              ValueCapsLength,
413    PHIDP_PREPARSED_DATA PreparsedData
414 ) ;
415
416 FUNCTION: NTSTATUS
417 HidP_GetExtendedAttributes (
418     HIDP_REPORT_TYPE            ReportType,
419     USHORT                      DataIndex,
420     PHIDP_PREPARSED_DATA        PreparsedData,
421     PHIDP_EXTENDED_ATTRIBUTES   Attributes,
422     PULONG                      LengthAttributes
423     ) ;
424
425 FUNCTION: NTSTATUS
426 HidP_InitializeReportForID (
427    HIDP_REPORT_TYPE     ReportType,
428    UCHAR                ReportID,
429    PHIDP_PREPARSED_DATA PreparsedData,
430    PCHAR                Report,
431    ULONG                ReportLength
432    ) ;
433
434 FUNCTION: NTSTATUS
435 HidP_SetData (
436     HIDP_REPORT_TYPE     ReportType,
437     PHIDP_DATA           DataList,
438     PULONG               DataLength,
439     PHIDP_PREPARSED_DATA PreparsedData,
440     PCHAR                Report,
441     ULONG                ReportLength
442     ) ;
443
444 FUNCTION: NTSTATUS
445 HidP_GetData (
446     HIDP_REPORT_TYPE     ReportType,
447     PHIDP_DATA           DataList,
448     PULONG               DataLength,
449     PHIDP_PREPARSED_DATA PreparsedData,
450     PCHAR                Report,
451     ULONG                ReportLength
452     ) ;
453
454 FUNCTION: ULONG
455 HidP_MaxDataListLength (
456    HIDP_REPORT_TYPE      ReportType,
457    PHIDP_PREPARSED_DATA  PreparsedData
458    ) ;
459
460 FUNCTION: NTSTATUS
461 HidP_SetUsages (
462    HIDP_REPORT_TYPE     ReportType,
463    USAGE                UsagePage,
464    USHORT               LinkCollection,
465    PUSAGE               UsageList,
466    PULONG               UsageLength,
467    PHIDP_PREPARSED_DATA PreparsedData,
468    PCHAR                Report,
469    ULONG                ReportLength
470    ) ;
471 ALIAS: HidP_SetButtons HidP_SetUsages
472
473 FUNCTION: NTSTATUS
474 HidP_UnsetUsages (
475    HIDP_REPORT_TYPE     ReportType,
476    USAGE                UsagePage,
477    USHORT               LinkCollection,
478    PUSAGE               UsageList,
479    PULONG               UsageLength,
480    PHIDP_PREPARSED_DATA PreparsedData,
481    PCHAR                Report,
482    ULONG                ReportLength
483    ) ;
484 ALIAS: HidP_UnsetButtons HidP_UnsetUsages
485
486 FUNCTION: NTSTATUS
487 HidP_GetUsages (
488    HIDP_REPORT_TYPE     ReportType,
489    USAGE                UsagePage,
490    USHORT               LinkCollection,
491    PUSAGE               UsageList,
492    PULONG               UsageLength,
493    PHIDP_PREPARSED_DATA PreparsedData,
494    PCHAR                Report,
495    ULONG                ReportLength
496    ) ;
497 ALIAS: HidP_GetButtons HidP_GetUsages
498
499 FUNCTION: NTSTATUS
500 HidP_GetUsagesEx (
501     HIDP_REPORT_TYPE     ReportType,
502     USHORT               LinkCollection,
503     PUSAGE_AND_PAGE      ButtonList,
504     ULONG*               UsageLength,
505     PHIDP_PREPARSED_DATA PreparsedData,
506     PCHAR                Report,
507     ULONG                ReportLength
508    ) ;
509 ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
510
511 FUNCTION: ULONG
512 HidP_MaxUsageListLength (
513    HIDP_REPORT_TYPE      ReportType,
514    USAGE                 UsagePage,
515    PHIDP_PREPARSED_DATA  PreparsedData
516    ) ;
517
518 FUNCTION: NTSTATUS
519 HidP_SetUsageValue (
520     HIDP_REPORT_TYPE     ReportType,
521     USAGE                UsagePage,
522     USHORT               LinkCollection,
523     USAGE                Usage,
524     ULONG                UsageValue,
525     PHIDP_PREPARSED_DATA PreparsedData,
526     PCHAR                Report,
527     ULONG                ReportLength
528     ) ;
529
530 FUNCTION: NTSTATUS
531 HidP_SetScaledUsageValue (
532     HIDP_REPORT_TYPE     ReportType,
533     USAGE                UsagePage,
534     USHORT               LinkCollection,
535     USAGE                Usage,
536     LONG                 UsageValue,
537     PHIDP_PREPARSED_DATA PreparsedData,
538     PCHAR                Report,
539     ULONG                ReportLength
540     ) ;
541
542 FUNCTION: NTSTATUS
543 HidP_SetUsageValueArray (
544     HIDP_REPORT_TYPE     ReportType,
545     USAGE                UsagePage,
546     USHORT               LinkCollection,
547     USAGE                Usage,
548     PCHAR                UsageValue,
549     USHORT               UsageValueByteLength,
550     PHIDP_PREPARSED_DATA PreparsedData,
551     PCHAR                Report,
552     ULONG                ReportLength
553     ) ;
554
555
556 FUNCTION: NTSTATUS
557 HidP_GetUsageValue (
558     HIDP_REPORT_TYPE     ReportType,
559     USAGE                UsagePage,
560     USHORT               LinkCollection,
561     USAGE                Usage,
562     PULONG               UsageValue,
563     PHIDP_PREPARSED_DATA PreparsedData,
564     PCHAR                Report,
565     ULONG                ReportLength
566     ) ;
567
568 FUNCTION: NTSTATUS
569 HidP_GetScaledUsageValue (
570     HIDP_REPORT_TYPE     ReportType,
571     USAGE                UsagePage,
572     USHORT               LinkCollection,
573     USAGE                Usage,
574     PLONG                UsageValue,
575     PHIDP_PREPARSED_DATA PreparsedData,
576     PCHAR                Report,
577     ULONG                ReportLength
578     ) ;
579
580 FUNCTION: NTSTATUS
581 HidP_GetUsageValueArray (
582     HIDP_REPORT_TYPE     ReportType,
583     USAGE                UsagePage,
584     USHORT               LinkCollection,
585     USAGE                Usage,
586     PCHAR                UsageValue,
587     USHORT               UsageValueByteLength,
588     PHIDP_PREPARSED_DATA PreparsedData,
589     PCHAR                Report,
590     ULONG                ReportLength
591     ) ;
592
593 FUNCTION: NTSTATUS
594 HidP_UsageListDifference (
595    PUSAGE   PreviousUsageList,
596    PUSAGE   CurrentUsageList,
597    PUSAGE   BreakUsageList,
598    PUSAGE   MakeUsageList,
599    ULONG    UsageListLength
600     ) ;
601
602 FUNCTION: NTSTATUS
603 HidP_UsageAndPageListDifference (
604    PUSAGE_AND_PAGE PreviousUsageList,
605    PUSAGE_AND_PAGE CurrentUsageList,
606    PUSAGE_AND_PAGE BreakUsageList,
607    PUSAGE_AND_PAGE MakeUsageList,
608    ULONG           UsageListLength
609    ) ;
610
611 C-ENUM:
612     HidP_Keyboard_Break
613     HidP_Keyboard_Make ;
614 TYPEDEF: int HIDP_KEYBOARD_DIRECTION
615
616 STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
617     { ul ULONG } ;
618 TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
619
620 CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
621     PVOID Context,
622     PCHAR NewScanCodes,
623     ULONG Length ) ;
624
625 FUNCTION: NTSTATUS
626 HidP_TranslateUsageAndPagesToI8042ScanCodes (
627     PUSAGE_AND_PAGE               ChangedUsageList,
628     ULONG                         UsageListLength,
629     HIDP_KEYBOARD_DIRECTION       KeyAction,
630     PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
631     PHIDP_INSERT_SCANCODES        InsertCodesProcedure,
632     PVOID                         InsertCodesContext
633     ) ;
634
635
636 FUNCTION: NTSTATUS
637 HidP_TranslateUsagesToI8042ScanCodes (
638     PUSAGE                        ChangedUsageList,
639     ULONG                         UsageListLength,
640     HIDP_KEYBOARD_DIRECTION       KeyAction,
641     PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
642     PHIDP_INSERT_SCANCODES        InsertCodesProcedure,
643     PVOID                         InsertCodesContext
644     ) ;
645
646 CONSTANT: FACILITY_HID_ERROR_CODE HEX: 11
647 : HIDP_ERROR_CODES ( SEV CODE -- HRESULT )
648     [ 28 shift ] dip bitor FACILITY_HID_ERROR_CODE 16 shift bitor ; inline
649 : HIDP_STATUS_SUCCESS                  ( -- HRESULT ) HEX: 0 HEX: 0 HIDP_ERROR_CODES ; inline
650 : HIDP_STATUS_NULL                     ( -- HRESULT ) HEX: 8 HEX: 1 HIDP_ERROR_CODES ; inline
651 : HIDP_STATUS_INVALID_PREPARSED_DATA   ( -- HRESULT ) HEX: C HEX: 1 HIDP_ERROR_CODES ; inline
652 : HIDP_STATUS_INVALID_REPORT_TYPE      ( -- HRESULT ) HEX: C HEX: 2 HIDP_ERROR_CODES ; inline
653 : HIDP_STATUS_INVALID_REPORT_LENGTH    ( -- HRESULT ) HEX: C HEX: 3 HIDP_ERROR_CODES ; inline
654 : HIDP_STATUS_USAGE_NOT_FOUND          ( -- HRESULT ) HEX: C HEX: 4 HIDP_ERROR_CODES ; inline
655 : HIDP_STATUS_VALUE_OUT_OF_RANGE       ( -- HRESULT ) HEX: C HEX: 5 HIDP_ERROR_CODES ; inline
656 : HIDP_STATUS_BAD_LOG_PHY_VALUES       ( -- HRESULT ) HEX: C HEX: 6 HIDP_ERROR_CODES ; inline
657 : HIDP_STATUS_BUFFER_TOO_SMALL         ( -- HRESULT ) HEX: C HEX: 7 HIDP_ERROR_CODES ; inline
658 : HIDP_STATUS_INTERNAL_ERROR           ( -- HRESULT ) HEX: C HEX: 8 HIDP_ERROR_CODES ; inline
659 : HIDP_STATUS_I8042_TRANS_UNKNOWN      ( -- HRESULT ) HEX: C HEX: 9 HIDP_ERROR_CODES ; inline
660 : HIDP_STATUS_INCOMPATIBLE_REPORT_ID   ( -- HRESULT ) HEX: C HEX: A HIDP_ERROR_CODES ; inline
661 : HIDP_STATUS_NOT_VALUE_ARRAY          ( -- HRESULT ) HEX: C HEX: B HIDP_ERROR_CODES ; inline
662 : HIDP_STATUS_IS_VALUE_ARRAY           ( -- HRESULT ) HEX: C HEX: C HIDP_ERROR_CODES ; inline
663 : HIDP_STATUS_DATA_INDEX_NOT_FOUND     ( -- HRESULT ) HEX: C HEX: D HIDP_ERROR_CODES ; inline
664 : HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE  ( -- HRESULT ) HEX: C HEX: E HIDP_ERROR_CODES ; inline
665 : HIDP_STATUS_BUTTON_NOT_PRESSED       ( -- HRESULT ) HEX: C HEX: F HIDP_ERROR_CODES ; inline
666 : HIDP_STATUS_REPORT_DOES_NOT_EXIST    ( -- HRESULT ) HEX: C HEX: 10 HIDP_ERROR_CODES ; inline
667 : HIDP_STATUS_NOT_IMPLEMENTED          ( -- HRESULT ) HEX: C HEX: 20 HIDP_ERROR_CODES ; inline
668 : HIDP_STATUS_I8242_TRANS_UNKNOWN      ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
669
670 STRUCT: HIDD_CONFIGURATION
671     { cookie            PVOID }
672     { size              ULONG }
673     { RingBufferSize    ULONG } ;
674 TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
675
676 STRUCT: HIDD_ATTRIBUTES
677     { Size           ULONG  }
678     { VendorID       USHORT }
679     { ProductID      USHORT }
680     { VersionNumber  USHORT } ;
681 TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
682
683 FUNCTION: BOOLEAN
684 HidD_GetAttributes (
685     HANDLE              HidDeviceObject,
686     PHIDD_ATTRIBUTES    Attributes
687     ) ;
688
689 FUNCTION: void
690 HidD_GetHidGuid (
691    LPGUID   HidGuid
692    ) ;
693
694 FUNCTION: BOOLEAN
695 HidD_GetPreparsedData (
696    HANDLE                HidDeviceObject,
697    PHIDP_PREPARSED_DATA* PreparsedData
698    ) ;
699
700 FUNCTION: BOOLEAN
701 HidD_FreePreparsedData (
702    PHIDP_PREPARSED_DATA PreparsedData
703    ) ;
704
705 FUNCTION: BOOLEAN
706 HidD_FlushQueue (
707    HANDLE                HidDeviceObject
708    ) ;
709
710 FUNCTION: BOOLEAN
711 HidD_GetConfiguration (
712    HANDLE               HidDeviceObject,
713    PHIDD_CONFIGURATION  Configuration,
714    ULONG                ConfigurationLength
715    ) ;
716
717 FUNCTION: BOOLEAN
718 HidD_SetConfiguration (
719    HANDLE               HidDeviceObject,
720    PHIDD_CONFIGURATION  Configuration,
721    ULONG                ConfigurationLength
722    ) ;
723
724 FUNCTION: BOOLEAN
725 HidD_GetFeature (
726    HANDLE   HidDeviceObject,
727    PVOID    ReportBuffer,
728    ULONG    ReportBufferLength
729    ) ;
730
731 FUNCTION: BOOLEAN
732 HidD_SetFeature (
733    HANDLE   HidDeviceObject,
734    PVOID    ReportBuffer,
735    ULONG    ReportBufferLength
736    ) ;
737
738 FUNCTION: BOOLEAN
739 HidD_GetInputReport (
740    HANDLE   HidDeviceObject,
741    PVOID    ReportBuffer,
742    ULONG    ReportBufferLength
743    ) ;
744
745 FUNCTION: BOOLEAN
746 HidD_SetOutputReport (
747    HANDLE   HidDeviceObject,
748    PVOID    ReportBuffer,
749    ULONG    ReportBufferLength
750    ) ;
751
752 FUNCTION: BOOLEAN
753 HidD_GetNumInputBuffers (
754     HANDLE  HidDeviceObject,
755     PULONG  NumberBuffers
756     ) ;
757
758 FUNCTION: BOOLEAN
759 HidD_SetNumInputBuffers (
760     HANDLE HidDeviceObject,
761     ULONG  NumberBuffers
762     ) ;
763
764 FUNCTION: BOOLEAN
765 HidD_GetPhysicalDescriptor (
766    HANDLE   HidDeviceObject,
767    PVOID    Buffer,
768    ULONG    BufferLength
769    ) ;
770
771 FUNCTION: BOOLEAN
772 HidD_GetManufacturerString (
773    HANDLE   HidDeviceObject,
774    PVOID    Buffer,
775    ULONG    BufferLength
776    ) ;
777
778 FUNCTION: BOOLEAN
779 HidD_GetProductString (
780    HANDLE   HidDeviceObject,
781    PVOID    Buffer,
782    ULONG    BufferLength
783    ) ;
784
785 FUNCTION: BOOLEAN
786 HidD_GetIndexedString (
787    HANDLE   HidDeviceObject,
788    ULONG    StringIndex,
789    PVOID    Buffer,
790    ULONG    BufferLength
791    ) ;
792
793 FUNCTION: BOOLEAN
794 HidD_GetSerialNumberString (
795    HANDLE   HidDeviceObject,
796    PVOID    Buffer,
797    ULONG    BufferLength
798    ) ;
799
800 FUNCTION: BOOLEAN
801 HidD_GetMsGenreDescriptor (
802    HANDLE   HidDeviceObject,
803    PVOID    Buffer,
804    ULONG    BufferLength
805    ) ;