]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/ddk/hid/hid.factor
Merge branch 'master' of git://github.com/erikcharlebois/factor
[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: HIDP_REPORT_TYPE
210     HidP_Input
211     HidP_Output
212     HidP_Feature ;
213
214 STRUCT: USAGE_AND_PAGE
215     { Usage     USAGE }
216     { UsagePage USAGE } ;
217 TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
218
219 : HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
220
221 STRUCT: HIDP_BUTTONS_CAPS_range
222     { UsageMin        USAGE  }
223     { UsageMax        USAGE  }
224     { StringMin       USHORT }
225     { StringMax       USHORT }
226     { DesignatorMin   USHORT }
227     { DesignatorMax   USHORT }
228     { DataIndexMin    USHORT }
229     { DataIndexMax    USHORT } ;
230
231 STRUCT: HIDP_BUTTONS_CAPS_not_range
232     { Usage           USAGE  }
233     { Reserved1       USAGE  }
234     { StringIndex     USHORT }
235     { Reserved2       USHORT }
236     { DesignatorIndex USHORT }
237     { Reserved3       USHORT }
238     { DataIndex       USHORT }
239     { Reserved4       USHORT } ;
240
241 UNION-STRUCT: HIDP_BUTTONS_CAPS_union
242     { Range    HIDP_BUTTONS_CAPS_range     }
243     { NotRange HIDP_BUTTONS_CAPS_not_range } ;
244
245 STRUCT: HIDP_BUTTON_CAPS
246     { UsagePage          USAGE                   }
247     { ReportID           UCHAR                   }
248     { IsAlias            BOOLEAN                 }
249     { BitField           USHORT                  }
250     { LinkCollection     USHORT                  }
251     { LinkUsage          USAGE                   }
252     { LinkUsagePage      USAGE                   }
253     { IsRange            BOOLEAN                 }
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
260
261 STRUCT: HIDP_VALUE_CAPS_range
262     { UsageMin        USAGE  }
263     { UsageMax        USAGE  }
264     { StringMin       USHORT }
265     { StringMax       USHORT }
266     { DesignatorMin   USHORT }
267     { DesignatorMax   USHORT }
268     { DataIndexMin    USHORT }
269     { DataIndexMax    USHORT } ;
270
271 STRUCT: HIDP_VALUE_CAPS_not_range
272     { Usage             USAGE  }
273     { Reserved1         USAGE  }
274     { StringIndex       USHORT }
275     { Reserved2         USHORT }
276     { DesignatorIndex   USHORT }
277     { Reserved3         USHORT }
278     { DataIndex         USHORT }
279     { Reserved4         USHORT } ;
280
281 UNION-STRUCT: HIDP_VALUE_CAPS_union
282     { Range    HIDP_VALUE_CAPS_range     }
283     { NotRange HIDP_VALUE_CAPS_not_range } ;
284
285 STRUCT: HIDP_VALUE_CAPS
286     { UsagePage          USAGE                  }
287     { ReportID           UCHAR                  }
288     { IsAlias            BOOLEAN                }
289     { BitField           USHORT                 }
290     { LinkCollection     USHORT                 }
291     { LinkUsage          USAGE                  }
292     { LinkUsagePage      USAGE                  }
293     { IsRange            BOOLEAN                }
294     { IsStringRange      BOOLEAN                }
295     { IsDesignatorRange  BOOLEAN                }
296     { IsAbsolute         BOOLEAN                }
297     { HasNull            BOOLEAN                }
298     { Reserved           UCHAR                  }
299     { BitSize            USHORT                 }
300     { ReportCount        USHORT                 }
301     { Reserved2          USHORT[5]              }
302     { UnitsExp           ULONG                  }
303     { Units              ULONG                  }
304     { LogicalMin         LONG                   }
305     { LogicalMax         LONG                   }
306     { PhysicalMin        LONG                   }
307     { PhysicalMax        LONG                   }
308     { Union              HIDP_VALUE_CAPS_union  } ;
309 TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
310
311 STRUCT: HIDP_LINK_COLLECTION_NODE
312     { LinkUsage                        USAGE  }
313     { LinkUsagePage                    USAGE  }
314     { Parent                           USHORT }
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
321
322 TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
323 C-TYPE: HIDP_PREPARSED_DATA
324 TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
325
326 STRUCT: HIDP_CAPS
327     { Usage                       USAGE      }
328     { UsagePage                   USAGE      }
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
344
345 STRUCT: HIDP_DATA
346     { DataIndex  USHORT }
347     { Reserved   USHORT }
348     { RawValue   ULONG  } ;
349 TYPEDEF: HIDP_DATA* PHIDP_DATA
350
351 STRUCT: HIDP_UNKNOWN_TOKEN
352     { Token     UCHAR    }
353     { Reserved  UCHAR[3] }
354     { BitField  ULONG    } ;
355 TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
356
357 STRUCT: HIDP_EXTENDED_ATTRIBUTES
358     { NumGlobalUnknowns   UCHAR               }
359     { Reserved            UCHAR[3]            }
360     { GlobalUnknowns      PHIDP_UNKNOWN_TOKEN }
361     { Data                ULONG[1]            } ;
362 TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
363
364 FUNCTION: NTSTATUS
365 HidP_GetCaps (
366    PHIDP_PREPARSED_DATA      PreparsedData,
367    PHIDP_CAPS                Capabilities
368    ) ;
369
370 FUNCTION: NTSTATUS
371 HidP_GetLinkCollectionNodes (
372    PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
373    PULONG                     LinkCollectionNodesLength,
374    PHIDP_PREPARSED_DATA       PreparsedData
375    ) ;
376
377 FUNCTION: NTSTATUS
378 HidP_GetSpecificButtonCaps (
379    HIDP_REPORT_TYPE     ReportType,
380    USAGE                UsagePage,
381    USHORT               LinkCollection,
382    USAGE                Usage,
383    PHIDP_BUTTON_CAPS    ButtonCaps,
384    PUSHORT              ButtonCapsLength,
385    PHIDP_PREPARSED_DATA PreparsedData
386    ) ;
387
388 FUNCTION: NTSTATUS
389 HidP_GetButtonCaps (
390    HIDP_REPORT_TYPE     ReportType,
391    PHIDP_BUTTON_CAPS    ButtonCaps,
392    PUSHORT              ButtonCapsLength,
393    PHIDP_PREPARSED_DATA PreparsedData
394 ) ;
395
396 FUNCTION: NTSTATUS
397 HidP_GetSpecificValueCaps (
398    HIDP_REPORT_TYPE     ReportType,
399    USAGE                UsagePage,
400    USHORT               LinkCollection,
401    USAGE                Usage,
402    PHIDP_VALUE_CAPS     ValueCaps,
403    PUSHORT              ValueCapsLength,
404    PHIDP_PREPARSED_DATA PreparsedData
405    ) ;
406
407 FUNCTION: NTSTATUS
408 HidP_GetValueCaps (
409    HIDP_REPORT_TYPE     ReportType,
410    PHIDP_VALUE_CAPS     ValueCaps,
411    PUSHORT              ValueCapsLength,
412    PHIDP_PREPARSED_DATA PreparsedData
413 ) ;
414
415 FUNCTION: NTSTATUS
416 HidP_GetExtendedAttributes (
417     HIDP_REPORT_TYPE            ReportType,
418     USHORT                      DataIndex,
419     PHIDP_PREPARSED_DATA        PreparsedData,
420     PHIDP_EXTENDED_ATTRIBUTES   Attributes,
421     PULONG                      LengthAttributes
422     ) ;
423
424 FUNCTION: NTSTATUS
425 HidP_InitializeReportForID (
426    HIDP_REPORT_TYPE     ReportType,
427    UCHAR                ReportID,
428    PHIDP_PREPARSED_DATA PreparsedData,
429    PCHAR                Report,
430    ULONG                ReportLength
431    ) ;
432
433 FUNCTION: NTSTATUS
434 HidP_SetData (
435     HIDP_REPORT_TYPE     ReportType,
436     PHIDP_DATA           DataList,
437     PULONG               DataLength,
438     PHIDP_PREPARSED_DATA PreparsedData,
439     PCHAR                Report,
440     ULONG                ReportLength
441     ) ;
442
443 FUNCTION: NTSTATUS
444 HidP_GetData (
445     HIDP_REPORT_TYPE     ReportType,
446     PHIDP_DATA           DataList,
447     PULONG               DataLength,
448     PHIDP_PREPARSED_DATA PreparsedData,
449     PCHAR                Report,
450     ULONG                ReportLength
451     ) ;
452
453 FUNCTION: ULONG
454 HidP_MaxDataListLength (
455    HIDP_REPORT_TYPE      ReportType,
456    PHIDP_PREPARSED_DATA  PreparsedData
457    ) ;
458
459 FUNCTION: NTSTATUS
460 HidP_SetUsages (
461    HIDP_REPORT_TYPE     ReportType,
462    USAGE                UsagePage,
463    USHORT               LinkCollection,
464    PUSAGE               UsageList,
465    PULONG               UsageLength,
466    PHIDP_PREPARSED_DATA PreparsedData,
467    PCHAR                Report,
468    ULONG                ReportLength
469    ) ;
470 ALIAS: HidP_SetButtons HidP_SetUsages
471
472 FUNCTION: NTSTATUS
473 HidP_UnsetUsages (
474    HIDP_REPORT_TYPE     ReportType,
475    USAGE                UsagePage,
476    USHORT               LinkCollection,
477    PUSAGE               UsageList,
478    PULONG               UsageLength,
479    PHIDP_PREPARSED_DATA PreparsedData,
480    PCHAR                Report,
481    ULONG                ReportLength
482    ) ;
483 ALIAS: HidP_UnsetButtons HidP_UnsetUsages
484
485 FUNCTION: NTSTATUS
486 HidP_GetUsages (
487    HIDP_REPORT_TYPE     ReportType,
488    USAGE                UsagePage,
489    USHORT               LinkCollection,
490    PUSAGE               UsageList,
491    PULONG               UsageLength,
492    PHIDP_PREPARSED_DATA PreparsedData,
493    PCHAR                Report,
494    ULONG                ReportLength
495    ) ;
496 ALIAS: HidP_GetButtons HidP_GetUsages
497
498 FUNCTION: NTSTATUS
499 HidP_GetUsagesEx (
500     HIDP_REPORT_TYPE     ReportType,
501     USHORT               LinkCollection,
502     PUSAGE_AND_PAGE      ButtonList,
503     ULONG*               UsageLength,
504     PHIDP_PREPARSED_DATA PreparsedData,
505     PCHAR                Report,
506     ULONG                ReportLength
507    ) ;
508 ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
509
510 FUNCTION: ULONG
511 HidP_MaxUsageListLength (
512    HIDP_REPORT_TYPE      ReportType,
513    USAGE                 UsagePage,
514    PHIDP_PREPARSED_DATA  PreparsedData
515    ) ;
516
517 FUNCTION: NTSTATUS
518 HidP_SetUsageValue (
519     HIDP_REPORT_TYPE     ReportType,
520     USAGE                UsagePage,
521     USHORT               LinkCollection,
522     USAGE                Usage,
523     ULONG                UsageValue,
524     PHIDP_PREPARSED_DATA PreparsedData,
525     PCHAR                Report,
526     ULONG                ReportLength
527     ) ;
528
529 FUNCTION: NTSTATUS
530 HidP_SetScaledUsageValue (
531     HIDP_REPORT_TYPE     ReportType,
532     USAGE                UsagePage,
533     USHORT               LinkCollection,
534     USAGE                Usage,
535     LONG                 UsageValue,
536     PHIDP_PREPARSED_DATA PreparsedData,
537     PCHAR                Report,
538     ULONG                ReportLength
539     ) ;
540
541 FUNCTION: NTSTATUS
542 HidP_SetUsageValueArray (
543     HIDP_REPORT_TYPE     ReportType,
544     USAGE                UsagePage,
545     USHORT               LinkCollection,
546     USAGE                Usage,
547     PCHAR                UsageValue,
548     USHORT               UsageValueByteLength,
549     PHIDP_PREPARSED_DATA PreparsedData,
550     PCHAR                Report,
551     ULONG                ReportLength
552     ) ;
553
554
555 FUNCTION: NTSTATUS
556 HidP_GetUsageValue (
557     HIDP_REPORT_TYPE     ReportType,
558     USAGE                UsagePage,
559     USHORT               LinkCollection,
560     USAGE                Usage,
561     PULONG               UsageValue,
562     PHIDP_PREPARSED_DATA PreparsedData,
563     PCHAR                Report,
564     ULONG                ReportLength
565     ) ;
566
567 FUNCTION: NTSTATUS
568 HidP_GetScaledUsageValue (
569     HIDP_REPORT_TYPE     ReportType,
570     USAGE                UsagePage,
571     USHORT               LinkCollection,
572     USAGE                Usage,
573     PLONG                UsageValue,
574     PHIDP_PREPARSED_DATA PreparsedData,
575     PCHAR                Report,
576     ULONG                ReportLength
577     ) ;
578
579 FUNCTION: NTSTATUS
580 HidP_GetUsageValueArray (
581     HIDP_REPORT_TYPE     ReportType,
582     USAGE                UsagePage,
583     USHORT               LinkCollection,
584     USAGE                Usage,
585     PCHAR                UsageValue,
586     USHORT               UsageValueByteLength,
587     PHIDP_PREPARSED_DATA PreparsedData,
588     PCHAR                Report,
589     ULONG                ReportLength
590     ) ;
591
592 FUNCTION: NTSTATUS
593 HidP_UsageListDifference (
594    PUSAGE   PreviousUsageList,
595    PUSAGE   CurrentUsageList,
596    PUSAGE   BreakUsageList,
597    PUSAGE   MakeUsageList,
598    ULONG    UsageListLength
599     ) ;
600
601 FUNCTION: NTSTATUS
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
608    ) ;
609
610 C-ENUM: HIDP_KEYBOARD_DIRECTION
611     HidP_Keyboard_Break
612     HidP_Keyboard_Make ;
613
614 STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
615     { ul ULONG } ;
616 TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
617
618 CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
619     PVOID Context,
620     PCHAR NewScanCodes,
621     ULONG Length ) ;
622
623 FUNCTION: NTSTATUS
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
631     ) ;
632
633
634 FUNCTION: NTSTATUS
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
642     ) ;
643
644 CONSTANT: FACILITY_HID_ERROR_CODE HEX: 11
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 ) HEX: 0 HEX: 0 HIDP_ERROR_CODES ; inline
648 : HIDP_STATUS_NULL                     ( -- HRESULT ) HEX: 8 HEX: 1 HIDP_ERROR_CODES ; inline
649 : HIDP_STATUS_INVALID_PREPARSED_DATA   ( -- HRESULT ) HEX: C HEX: 1 HIDP_ERROR_CODES ; inline
650 : HIDP_STATUS_INVALID_REPORT_TYPE      ( -- HRESULT ) HEX: C HEX: 2 HIDP_ERROR_CODES ; inline
651 : HIDP_STATUS_INVALID_REPORT_LENGTH    ( -- HRESULT ) HEX: C HEX: 3 HIDP_ERROR_CODES ; inline
652 : HIDP_STATUS_USAGE_NOT_FOUND          ( -- HRESULT ) HEX: C HEX: 4 HIDP_ERROR_CODES ; inline
653 : HIDP_STATUS_VALUE_OUT_OF_RANGE       ( -- HRESULT ) HEX: C HEX: 5 HIDP_ERROR_CODES ; inline
654 : HIDP_STATUS_BAD_LOG_PHY_VALUES       ( -- HRESULT ) HEX: C HEX: 6 HIDP_ERROR_CODES ; inline
655 : HIDP_STATUS_BUFFER_TOO_SMALL         ( -- HRESULT ) HEX: C HEX: 7 HIDP_ERROR_CODES ; inline
656 : HIDP_STATUS_INTERNAL_ERROR           ( -- HRESULT ) HEX: C HEX: 8 HIDP_ERROR_CODES ; inline
657 : HIDP_STATUS_I8042_TRANS_UNKNOWN      ( -- HRESULT ) HEX: C HEX: 9 HIDP_ERROR_CODES ; inline
658 : HIDP_STATUS_INCOMPATIBLE_REPORT_ID   ( -- HRESULT ) HEX: C HEX: A HIDP_ERROR_CODES ; inline
659 : HIDP_STATUS_NOT_VALUE_ARRAY          ( -- HRESULT ) HEX: C HEX: B HIDP_ERROR_CODES ; inline
660 : HIDP_STATUS_IS_VALUE_ARRAY           ( -- HRESULT ) HEX: C HEX: C HIDP_ERROR_CODES ; inline
661 : HIDP_STATUS_DATA_INDEX_NOT_FOUND     ( -- HRESULT ) HEX: C HEX: D HIDP_ERROR_CODES ; inline
662 : HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE  ( -- HRESULT ) HEX: C HEX: E HIDP_ERROR_CODES ; inline
663 : HIDP_STATUS_BUTTON_NOT_PRESSED       ( -- HRESULT ) HEX: C HEX: F HIDP_ERROR_CODES ; inline
664 : HIDP_STATUS_REPORT_DOES_NOT_EXIST    ( -- HRESULT ) HEX: C HEX: 10 HIDP_ERROR_CODES ; inline
665 : HIDP_STATUS_NOT_IMPLEMENTED          ( -- HRESULT ) HEX: C HEX: 20 HIDP_ERROR_CODES ; inline
666 : HIDP_STATUS_I8242_TRANS_UNKNOWN      ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
667
668 STRUCT: HIDD_CONFIGURATION
669     { cookie            PVOID }
670     { size              ULONG }
671     { RingBufferSize    ULONG } ;
672 TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
673
674 STRUCT: HIDD_ATTRIBUTES
675     { Size           ULONG  }
676     { VendorID       USHORT }
677     { ProductID      USHORT }
678     { VersionNumber  USHORT } ;
679 TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
680
681 FUNCTION: BOOLEAN
682 HidD_GetAttributes (
683     HANDLE              HidDeviceObject,
684     PHIDD_ATTRIBUTES    Attributes
685     ) ;
686
687 FUNCTION: void
688 HidD_GetHidGuid (
689    LPGUID   HidGuid
690    ) ;
691
692 FUNCTION: BOOLEAN
693 HidD_GetPreparsedData (
694    HANDLE                HidDeviceObject,
695    PHIDP_PREPARSED_DATA* PreparsedData
696    ) ;
697
698 FUNCTION: BOOLEAN
699 HidD_FreePreparsedData (
700    PHIDP_PREPARSED_DATA PreparsedData
701    ) ;
702
703 FUNCTION: BOOLEAN
704 HidD_FlushQueue (
705    HANDLE                HidDeviceObject
706    ) ;
707
708 FUNCTION: BOOLEAN
709 HidD_GetConfiguration (
710    HANDLE               HidDeviceObject,
711    PHIDD_CONFIGURATION  Configuration,
712    ULONG                ConfigurationLength
713    ) ;
714
715 FUNCTION: BOOLEAN
716 HidD_SetConfiguration (
717    HANDLE               HidDeviceObject,
718    PHIDD_CONFIGURATION  Configuration,
719    ULONG                ConfigurationLength
720    ) ;
721
722 FUNCTION: BOOLEAN
723 HidD_GetFeature (
724    HANDLE   HidDeviceObject,
725    PVOID    ReportBuffer,
726    ULONG    ReportBufferLength
727    ) ;
728
729 FUNCTION: BOOLEAN
730 HidD_SetFeature (
731    HANDLE   HidDeviceObject,
732    PVOID    ReportBuffer,
733    ULONG    ReportBufferLength
734    ) ;
735
736 FUNCTION: BOOLEAN
737 HidD_GetInputReport (
738    HANDLE   HidDeviceObject,
739    PVOID    ReportBuffer,
740    ULONG    ReportBufferLength
741    ) ;
742
743 FUNCTION: BOOLEAN
744 HidD_SetOutputReport (
745    HANDLE   HidDeviceObject,
746    PVOID    ReportBuffer,
747    ULONG    ReportBufferLength
748    ) ;
749
750 FUNCTION: BOOLEAN
751 HidD_GetNumInputBuffers (
752     HANDLE  HidDeviceObject,
753     PULONG  NumberBuffers
754     ) ;
755
756 FUNCTION: BOOLEAN
757 HidD_SetNumInputBuffers (
758     HANDLE HidDeviceObject,
759     ULONG  NumberBuffers
760     ) ;
761
762 FUNCTION: BOOLEAN
763 HidD_GetPhysicalDescriptor (
764    HANDLE   HidDeviceObject,
765    PVOID    Buffer,
766    ULONG    BufferLength
767    ) ;
768
769 FUNCTION: BOOLEAN
770 HidD_GetManufacturerString (
771    HANDLE   HidDeviceObject,
772    PVOID    Buffer,
773    ULONG    BufferLength
774    ) ;
775
776 FUNCTION: BOOLEAN
777 HidD_GetProductString (
778    HANDLE   HidDeviceObject,
779    PVOID    Buffer,
780    ULONG    BufferLength
781    ) ;
782
783 FUNCTION: BOOLEAN
784 HidD_GetIndexedString (
785    HANDLE   HidDeviceObject,
786    ULONG    StringIndex,
787    PVOID    Buffer,
788    ULONG    BufferLength
789    ) ;
790
791 FUNCTION: BOOLEAN
792 HidD_GetSerialNumberString (
793    HANDLE   HidDeviceObject,
794    PVOID    Buffer,
795    ULONG    BufferLength
796    ) ;
797
798 FUNCTION: BOOLEAN
799 HidD_GetMsGenreDescriptor (
800    HANDLE   HidDeviceObject,
801    PVOID    Buffer,
802    ULONG    BufferLength
803    ) ;