factor/basis/windows/ddk/hid/hid.factor

804 lines
27 KiB
Factor
Executable File

! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.libraries alien.syntax
classes.struct kernel math windows.types windows.ole32 ;
IN: windows.ddk.hid
<< "hid" "hid.dll" stdcall add-library >>
LIBRARY: hid
TYPEDEF: LONG NTSTATUS
TYPEDEF: USHORT USAGE
TYPEDEF: USAGE* PUSAGE
CONSTANT: HID_USAGE_PAGE_UNDEFINED 0x00
CONSTANT: HID_USAGE_PAGE_GENERIC 0x01
CONSTANT: HID_USAGE_PAGE_SIMULATION 0x02
CONSTANT: HID_USAGE_PAGE_VR 0x03
CONSTANT: HID_USAGE_PAGE_SPORT 0x04
CONSTANT: HID_USAGE_PAGE_GAME 0x05
CONSTANT: HID_USAGE_PAGE_KEYBOARD 0x07
CONSTANT: HID_USAGE_PAGE_LED 0x08
CONSTANT: HID_USAGE_PAGE_BUTTON 0x09
CONSTANT: HID_USAGE_PAGE_ORDINAL 0x0A
CONSTANT: HID_USAGE_PAGE_TELEPHONY 0x0B
CONSTANT: HID_USAGE_PAGE_CONSUMER 0x0C
CONSTANT: HID_USAGE_PAGE_DIGITIZER 0x0D
CONSTANT: HID_USAGE_PAGE_UNICODE 0x10
CONSTANT: HID_USAGE_PAGE_ALPHANUMERIC 0x14
CONSTANT: HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE 0xFFF3
CONSTANT: HID_USAGE_GENERIC_POINTER 0x01
CONSTANT: HID_USAGE_GENERIC_MOUSE 0x02
CONSTANT: HID_USAGE_GENERIC_JOYSTICK 0x04
CONSTANT: HID_USAGE_GENERIC_GAMEPAD 0x05
CONSTANT: HID_USAGE_GENERIC_KEYBOARD 0x06
CONSTANT: HID_USAGE_GENERIC_KEYPAD 0x07
CONSTANT: HID_USAGE_GENERIC_SYSTEM_CTL 0x80
CONSTANT: HID_USAGE_GENERIC_X 0x30
CONSTANT: HID_USAGE_GENERIC_Y 0x31
CONSTANT: HID_USAGE_GENERIC_Z 0x32
CONSTANT: HID_USAGE_GENERIC_RX 0x33
CONSTANT: HID_USAGE_GENERIC_RY 0x34
CONSTANT: HID_USAGE_GENERIC_RZ 0x35
CONSTANT: HID_USAGE_GENERIC_SLIDER 0x36
CONSTANT: HID_USAGE_GENERIC_DIAL 0x37
CONSTANT: HID_USAGE_GENERIC_WHEEL 0x38
CONSTANT: HID_USAGE_GENERIC_HATSWITCH 0x39
CONSTANT: HID_USAGE_GENERIC_COUNTED_BUFFER 0x3A
CONSTANT: HID_USAGE_GENERIC_BYTE_COUNT 0x3B
CONSTANT: HID_USAGE_GENERIC_MOTION_WAKEUP 0x3C
CONSTANT: HID_USAGE_GENERIC_VX 0x40
CONSTANT: HID_USAGE_GENERIC_VY 0x41
CONSTANT: HID_USAGE_GENERIC_VZ 0x42
CONSTANT: HID_USAGE_GENERIC_VBRX 0x43
CONSTANT: HID_USAGE_GENERIC_VBRY 0x44
CONSTANT: HID_USAGE_GENERIC_VBRZ 0x45
CONSTANT: HID_USAGE_GENERIC_VNO 0x46
CONSTANT: HID_USAGE_GENERIC_SYSCTL_POWER 0x81
CONSTANT: HID_USAGE_GENERIC_SYSCTL_SLEEP 0x82
CONSTANT: HID_USAGE_GENERIC_SYSCTL_WAKE 0x83
CONSTANT: HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU 0x84
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MAIN_MENU 0x85
CONSTANT: HID_USAGE_GENERIC_SYSCTL_APP_MENU 0x86
CONSTANT: HID_USAGE_GENERIC_SYSCTL_HELP_MENU 0x87
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_EXIT 0x88
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_SELECT 0x89
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT 0x8A
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_LEFT 0x8B
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_UP 0x8C
CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_DOWN 0x8D
CONSTANT: HID_USAGE_SIMULATION_RUDDER 0xBA
CONSTANT: HID_USAGE_SIMULATION_THROTTLE 0xBB
CONSTANT: HID_USAGE_KEYBOARD_NOEVENT 0x00
CONSTANT: HID_USAGE_KEYBOARD_ROLLOVER 0x01
CONSTANT: HID_USAGE_KEYBOARD_POSTFAIL 0x02
CONSTANT: HID_USAGE_KEYBOARD_UNDEFINED 0x03
CONSTANT: HID_USAGE_KEYBOARD_aA 0x04
CONSTANT: HID_USAGE_KEYBOARD_zZ 0x1D
CONSTANT: HID_USAGE_KEYBOARD_ONE 0x1E
CONSTANT: HID_USAGE_KEYBOARD_ZERO 0x27
CONSTANT: HID_USAGE_KEYBOARD_LCTRL 0xE0
CONSTANT: HID_USAGE_KEYBOARD_LSHFT 0xE1
CONSTANT: HID_USAGE_KEYBOARD_LALT 0xE2
CONSTANT: HID_USAGE_KEYBOARD_LGUI 0xE3
CONSTANT: HID_USAGE_KEYBOARD_RCTRL 0xE4
CONSTANT: HID_USAGE_KEYBOARD_RSHFT 0xE5
CONSTANT: HID_USAGE_KEYBOARD_RALT 0xE6
CONSTANT: HID_USAGE_KEYBOARD_RGUI 0xE7
CONSTANT: HID_USAGE_KEYBOARD_SCROLL_LOCK 0x47
CONSTANT: HID_USAGE_KEYBOARD_NUM_LOCK 0x53
CONSTANT: HID_USAGE_KEYBOARD_CAPS_LOCK 0x39
CONSTANT: HID_USAGE_KEYBOARD_F1 0x3A
CONSTANT: HID_USAGE_KEYBOARD_F12 0x45
CONSTANT: HID_USAGE_KEYBOARD_RETURN 0x28
CONSTANT: HID_USAGE_KEYBOARD_ESCAPE 0x29
CONSTANT: HID_USAGE_KEYBOARD_DELETE 0x2A
CONSTANT: HID_USAGE_KEYBOARD_PRINT_SCREEN 0x46
CONSTANT: HID_USAGE_LED_NUM_LOCK 0x01
CONSTANT: HID_USAGE_LED_CAPS_LOCK 0x02
CONSTANT: HID_USAGE_LED_SCROLL_LOCK 0x03
CONSTANT: HID_USAGE_LED_COMPOSE 0x04
CONSTANT: HID_USAGE_LED_KANA 0x05
CONSTANT: HID_USAGE_LED_POWER 0x06
CONSTANT: HID_USAGE_LED_SHIFT 0x07
CONSTANT: HID_USAGE_LED_DO_NOT_DISTURB 0x08
CONSTANT: HID_USAGE_LED_MUTE 0x09
CONSTANT: HID_USAGE_LED_TONE_ENABLE 0x0A
CONSTANT: HID_USAGE_LED_HIGH_CUT_FILTER 0x0B
CONSTANT: HID_USAGE_LED_LOW_CUT_FILTER 0x0C
CONSTANT: HID_USAGE_LED_EQUALIZER_ENABLE 0x0D
CONSTANT: HID_USAGE_LED_SOUND_FIELD_ON 0x0E
CONSTANT: HID_USAGE_LED_SURROUND_FIELD_ON 0x0F
CONSTANT: HID_USAGE_LED_REPEAT 0x10
CONSTANT: HID_USAGE_LED_STEREO 0x11
CONSTANT: HID_USAGE_LED_SAMPLING_RATE_DETECT 0x12
CONSTANT: HID_USAGE_LED_SPINNING 0x13
CONSTANT: HID_USAGE_LED_CAV 0x14
CONSTANT: HID_USAGE_LED_CLV 0x15
CONSTANT: HID_USAGE_LED_RECORDING_FORMAT_DET 0x16
CONSTANT: HID_USAGE_LED_OFF_HOOK 0x17
CONSTANT: HID_USAGE_LED_RING 0x18
CONSTANT: HID_USAGE_LED_MESSAGE_WAITING 0x19
CONSTANT: HID_USAGE_LED_DATA_MODE 0x1A
CONSTANT: HID_USAGE_LED_BATTERY_OPERATION 0x1B
CONSTANT: HID_USAGE_LED_BATTERY_OK 0x1C
CONSTANT: HID_USAGE_LED_BATTERY_LOW 0x1D
CONSTANT: HID_USAGE_LED_SPEAKER 0x1E
CONSTANT: HID_USAGE_LED_HEAD_SET 0x1F
CONSTANT: HID_USAGE_LED_HOLD 0x20
CONSTANT: HID_USAGE_LED_MICROPHONE 0x21
CONSTANT: HID_USAGE_LED_COVERAGE 0x22
CONSTANT: HID_USAGE_LED_NIGHT_MODE 0x23
CONSTANT: HID_USAGE_LED_SEND_CALLS 0x24
CONSTANT: HID_USAGE_LED_CALL_PICKUP 0x25
CONSTANT: HID_USAGE_LED_CONFERENCE 0x26
CONSTANT: HID_USAGE_LED_STAND_BY 0x27
CONSTANT: HID_USAGE_LED_CAMERA_ON 0x28
CONSTANT: HID_USAGE_LED_CAMERA_OFF 0x29
CONSTANT: HID_USAGE_LED_ON_LINE 0x2A
CONSTANT: HID_USAGE_LED_OFF_LINE 0x2B
CONSTANT: HID_USAGE_LED_BUSY 0x2C
CONSTANT: HID_USAGE_LED_READY 0x2D
CONSTANT: HID_USAGE_LED_PAPER_OUT 0x2E
CONSTANT: HID_USAGE_LED_PAPER_JAM 0x2F
CONSTANT: HID_USAGE_LED_REMOTE 0x30
CONSTANT: HID_USAGE_LED_FORWARD 0x31
CONSTANT: HID_USAGE_LED_REVERSE 0x32
CONSTANT: HID_USAGE_LED_STOP 0x33
CONSTANT: HID_USAGE_LED_REWIND 0x34
CONSTANT: HID_USAGE_LED_FAST_FORWARD 0x35
CONSTANT: HID_USAGE_LED_PLAY 0x36
CONSTANT: HID_USAGE_LED_PAUSE 0x37
CONSTANT: HID_USAGE_LED_RECORD 0x38
CONSTANT: HID_USAGE_LED_ERROR 0x39
CONSTANT: HID_USAGE_LED_SELECTED_INDICATOR 0x3A
CONSTANT: HID_USAGE_LED_IN_USE_INDICATOR 0x3B
CONSTANT: HID_USAGE_LED_MULTI_MODE_INDICATOR 0x3C
CONSTANT: HID_USAGE_LED_INDICATOR_ON 0x3D
CONSTANT: HID_USAGE_LED_INDICATOR_FLASH 0x3E
CONSTANT: HID_USAGE_LED_INDICATOR_SLOW_BLINK 0x3F
CONSTANT: HID_USAGE_LED_INDICATOR_FAST_BLINK 0x40
CONSTANT: HID_USAGE_LED_INDICATOR_OFF 0x41
CONSTANT: HID_USAGE_LED_FLASH_ON_TIME 0x42
CONSTANT: HID_USAGE_LED_SLOW_BLINK_ON_TIME 0x43
CONSTANT: HID_USAGE_LED_SLOW_BLINK_OFF_TIME 0x44
CONSTANT: HID_USAGE_LED_FAST_BLINK_ON_TIME 0x45
CONSTANT: HID_USAGE_LED_FAST_BLINK_OFF_TIME 0x46
CONSTANT: HID_USAGE_LED_INDICATOR_COLOR 0x47
CONSTANT: HID_USAGE_LED_RED 0x48
CONSTANT: HID_USAGE_LED_GREEN 0x49
CONSTANT: HID_USAGE_LED_AMBER 0x4A
CONSTANT: HID_USAGE_LED_GENERIC_INDICATOR 0x4B
CONSTANT: HID_USAGE_TELEPHONY_PHONE 0x01
CONSTANT: HID_USAGE_TELEPHONY_ANSWERING_MACHINE 0x02
CONSTANT: HID_USAGE_TELEPHONY_MESSAGE_CONTROLS 0x03
CONSTANT: HID_USAGE_TELEPHONY_HANDSET 0x04
CONSTANT: HID_USAGE_TELEPHONY_HEADSET 0x05
CONSTANT: HID_USAGE_TELEPHONY_KEYPAD 0x06
CONSTANT: HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON 0x07
CONSTANT: HID_USAGE_TELEPHONY_REDIAL 0x24
CONSTANT: HID_USAGE_TELEPHONY_TRANSFER 0x25
CONSTANT: HID_USAGE_TELEPHONY_DROP 0x26
CONSTANT: HID_USAGE_TELEPHONY_LINE 0x2A
CONSTANT: HID_USAGE_TELEPHONY_RING_ENABLE 0x2D
CONSTANT: HID_USAGE_TELEPHONY_SEND 0x31
CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_0 0xB0
CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_D 0xBF
CONSTANT: HID_USAGE_TELEPHONY_HOST_AVAILABLE 0xF1
CONSTANT: HID_USAGE_MS_BTH_HF_DIALNUMBER 0x21
CONSTANT: HID_USAGE_MS_BTH_HF_DIALMEMORY 0x22
CONSTANT: HID_USAGE_CONSUMERCTRL 0x01
CONSTANT: HID_USAGE_DIGITIZER_PEN 0x02
CONSTANT: HID_USAGE_DIGITIZER_IN_RANGE 0x32
CONSTANT: HID_USAGE_DIGITIZER_TIP_SWITCH 0x42
CONSTANT: HID_USAGE_DIGITIZER_BARREL_SWITCH 0x44
CONSTANT: HIDP_LINK_COLLECTION_ROOT -1
CONSTANT: HIDP_LINK_COLLECTION_UNSPECIFIED 0
ENUM: HIDP_REPORT_TYPE
HidP_Input
HidP_Output
HidP_Feature ;
STRUCT: USAGE_AND_PAGE
{ Usage USAGE }
{ UsagePage USAGE } ;
TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
: HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
STRUCT: HIDP_BUTTONS_CAPS_range
{ UsageMin USAGE }
{ UsageMax USAGE }
{ StringMin USHORT }
{ StringMax USHORT }
{ DesignatorMin USHORT }
{ DesignatorMax USHORT }
{ DataIndexMin USHORT }
{ DataIndexMax USHORT } ;
STRUCT: HIDP_BUTTONS_CAPS_not_range
{ Usage USAGE }
{ Reserved1 USAGE }
{ StringIndex USHORT }
{ Reserved2 USHORT }
{ DesignatorIndex USHORT }
{ Reserved3 USHORT }
{ DataIndex USHORT }
{ Reserved4 USHORT } ;
UNION-STRUCT: HIDP_BUTTONS_CAPS_union
{ Range HIDP_BUTTONS_CAPS_range }
{ NotRange HIDP_BUTTONS_CAPS_not_range } ;
STRUCT: HIDP_BUTTON_CAPS
{ UsagePage USAGE }
{ ReportID UCHAR }
{ IsAlias BOOLEAN }
{ BitField USHORT }
{ LinkCollection USHORT }
{ LinkUsage USAGE }
{ LinkUsagePage USAGE }
{ IsRange BOOLEAN }
{ IsStringRange BOOLEAN }
{ IsDesignatorRange BOOLEAN }
{ IsAbsolute BOOLEAN }
{ Reserved ULONG[10] }
{ Union HIDP_BUTTONS_CAPS_union } ;
TYPEDEF: HIDP_BUTTON_CAPS* PHIDP_BUTTON_CAPS
STRUCT: HIDP_VALUE_CAPS_range
{ UsageMin USAGE }
{ UsageMax USAGE }
{ StringMin USHORT }
{ StringMax USHORT }
{ DesignatorMin USHORT }
{ DesignatorMax USHORT }
{ DataIndexMin USHORT }
{ DataIndexMax USHORT } ;
STRUCT: HIDP_VALUE_CAPS_not_range
{ Usage USAGE }
{ Reserved1 USAGE }
{ StringIndex USHORT }
{ Reserved2 USHORT }
{ DesignatorIndex USHORT }
{ Reserved3 USHORT }
{ DataIndex USHORT }
{ Reserved4 USHORT } ;
UNION-STRUCT: HIDP_VALUE_CAPS_union
{ Range HIDP_VALUE_CAPS_range }
{ NotRange HIDP_VALUE_CAPS_not_range } ;
STRUCT: HIDP_VALUE_CAPS
{ UsagePage USAGE }
{ ReportID UCHAR }
{ IsAlias BOOLEAN }
{ BitField USHORT }
{ LinkCollection USHORT }
{ LinkUsage USAGE }
{ LinkUsagePage USAGE }
{ IsRange BOOLEAN }
{ IsStringRange BOOLEAN }
{ IsDesignatorRange BOOLEAN }
{ IsAbsolute BOOLEAN }
{ HasNull BOOLEAN }
{ Reserved UCHAR }
{ BitSize USHORT }
{ ReportCount USHORT }
{ Reserved2 USHORT[5] }
{ UnitsExp ULONG }
{ Units ULONG }
{ LogicalMin LONG }
{ LogicalMax LONG }
{ PhysicalMin LONG }
{ PhysicalMax LONG }
{ Union HIDP_VALUE_CAPS_union } ;
TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
STRUCT: HIDP_LINK_COLLECTION_NODE
{ LinkUsage USAGE }
{ LinkUsagePage USAGE }
{ Parent USHORT }
{ NumberOfChildren USHORT }
{ NextSibling USHORT }
{ FirstChild USHORT }
{ CollectionTypeIsAliasBitfield ULONG }
{ UserContext PVOID } ;
TYPEDEF: HIDP_LINK_COLLECTION_NODE* PHIDP_LINK_COLLECTION_NODE
TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
C-TYPE: HIDP_PREPARSED_DATA
TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
STRUCT: HIDP_CAPS
{ Usage USAGE }
{ UsagePage USAGE }
{ InputReportByteLength USHORT }
{ OutputReportByteLength USHORT }
{ FeatureReportByteLength USHORT }
{ Reserved USHORT[17] }
{ NumberLinkCollectionNodes USHORT }
{ NumberInputButtonCaps USHORT }
{ NumberInputValueCaps USHORT }
{ NumberInputDataIndices USHORT }
{ NumberOutputButtonCaps USHORT }
{ NumberOutputValueCaps USHORT }
{ NumberOutputDataIndices USHORT }
{ NumberFeatureButtonCaps USHORT }
{ NumberFeatureValueCaps USHORT }
{ NumberFeatureDataIndices USHORT } ;
TYPEDEF: HIDP_CAPS* PHIDP_CAPS
STRUCT: HIDP_DATA
{ DataIndex USHORT }
{ Reserved USHORT }
{ RawValue ULONG } ;
TYPEDEF: HIDP_DATA* PHIDP_DATA
STRUCT: HIDP_UNKNOWN_TOKEN
{ Token UCHAR }
{ Reserved UCHAR[3] }
{ BitField ULONG } ;
TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
STRUCT: HIDP_EXTENDED_ATTRIBUTES
{ NumGlobalUnknowns UCHAR }
{ Reserved UCHAR[3] }
{ GlobalUnknowns PHIDP_UNKNOWN_TOKEN }
{ Data ULONG[1] } ;
TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
FUNCTION: NTSTATUS
HidP_GetCaps (
PHIDP_PREPARSED_DATA PreparsedData,
PHIDP_CAPS Capabilities
)
FUNCTION: NTSTATUS
HidP_GetLinkCollectionNodes (
PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
PULONG LinkCollectionNodesLength,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_GetSpecificButtonCaps (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PHIDP_BUTTON_CAPS ButtonCaps,
PUSHORT ButtonCapsLength,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_GetButtonCaps (
HIDP_REPORT_TYPE ReportType,
PHIDP_BUTTON_CAPS ButtonCaps,
PUSHORT ButtonCapsLength,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_GetSpecificValueCaps (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PHIDP_VALUE_CAPS ValueCaps,
PUSHORT ValueCapsLength,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_GetValueCaps (
HIDP_REPORT_TYPE ReportType,
PHIDP_VALUE_CAPS ValueCaps,
PUSHORT ValueCapsLength,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_GetExtendedAttributes (
HIDP_REPORT_TYPE ReportType,
USHORT DataIndex,
PHIDP_PREPARSED_DATA PreparsedData,
PHIDP_EXTENDED_ATTRIBUTES Attributes,
PULONG LengthAttributes
)
FUNCTION: NTSTATUS
HidP_InitializeReportForID (
HIDP_REPORT_TYPE ReportType,
UCHAR ReportID,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_SetData (
HIDP_REPORT_TYPE ReportType,
PHIDP_DATA DataList,
PULONG DataLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_GetData (
HIDP_REPORT_TYPE ReportType,
PHIDP_DATA DataList,
PULONG DataLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: ULONG
HidP_MaxDataListLength (
HIDP_REPORT_TYPE ReportType,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_SetUsages (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
PUSAGE UsageList,
PULONG UsageLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
ALIAS: HidP_SetButtons HidP_SetUsages
FUNCTION: NTSTATUS
HidP_UnsetUsages (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
PUSAGE UsageList,
PULONG UsageLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
ALIAS: HidP_UnsetButtons HidP_UnsetUsages
FUNCTION: NTSTATUS
HidP_GetUsages (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
PUSAGE UsageList,
PULONG UsageLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
ALIAS: HidP_GetButtons HidP_GetUsages
FUNCTION: NTSTATUS
HidP_GetUsagesEx (
HIDP_REPORT_TYPE ReportType,
USHORT LinkCollection,
PUSAGE_AND_PAGE ButtonList,
ULONG* UsageLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
FUNCTION: ULONG
HidP_MaxUsageListLength (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: NTSTATUS
HidP_SetUsageValue (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
ULONG UsageValue,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_SetScaledUsageValue (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
LONG UsageValue,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_SetUsageValueArray (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PCHAR UsageValue,
USHORT UsageValueByteLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_GetUsageValue (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PULONG UsageValue,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_GetScaledUsageValue (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PLONG UsageValue,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_GetUsageValueArray (
HIDP_REPORT_TYPE ReportType,
USAGE UsagePage,
USHORT LinkCollection,
USAGE Usage,
PCHAR UsageValue,
USHORT UsageValueByteLength,
PHIDP_PREPARSED_DATA PreparsedData,
PCHAR Report,
ULONG ReportLength
)
FUNCTION: NTSTATUS
HidP_UsageListDifference (
PUSAGE PreviousUsageList,
PUSAGE CurrentUsageList,
PUSAGE BreakUsageList,
PUSAGE MakeUsageList,
ULONG UsageListLength
)
FUNCTION: NTSTATUS
HidP_UsageAndPageListDifference (
PUSAGE_AND_PAGE PreviousUsageList,
PUSAGE_AND_PAGE CurrentUsageList,
PUSAGE_AND_PAGE BreakUsageList,
PUSAGE_AND_PAGE MakeUsageList,
ULONG UsageListLength
)
ENUM: HIDP_KEYBOARD_DIRECTION
HidP_Keyboard_Break
HidP_Keyboard_Make ;
STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
{ ul ULONG } ;
TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
PVOID Context,
PCHAR NewScanCodes,
ULONG Length )
FUNCTION: NTSTATUS
HidP_TranslateUsageAndPagesToI8042ScanCodes (
PUSAGE_AND_PAGE ChangedUsageList,
ULONG UsageListLength,
HIDP_KEYBOARD_DIRECTION KeyAction,
PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
PHIDP_INSERT_SCANCODES InsertCodesProcedure,
PVOID InsertCodesContext
)
FUNCTION: NTSTATUS
HidP_TranslateUsagesToI8042ScanCodes (
PUSAGE ChangedUsageList,
ULONG UsageListLength,
HIDP_KEYBOARD_DIRECTION KeyAction,
PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
PHIDP_INSERT_SCANCODES InsertCodesProcedure,
PVOID InsertCodesContext
)
CONSTANT: FACILITY_HID_ERROR_CODE 0x11
: HIDP_ERROR_CODES ( SEV CODE -- HRESULT )
[ 28 shift ] dip bitor FACILITY_HID_ERROR_CODE 16 shift bitor ; inline
: HIDP_STATUS_SUCCESS ( -- HRESULT ) 0x0 0x0 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_NULL ( -- HRESULT ) 0x8 0x1 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_INVALID_PREPARSED_DATA ( -- HRESULT ) 0xC 0x1 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_INVALID_REPORT_TYPE ( -- HRESULT ) 0xC 0x2 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_INVALID_REPORT_LENGTH ( -- HRESULT ) 0xC 0x3 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_USAGE_NOT_FOUND ( -- HRESULT ) 0xC 0x4 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_VALUE_OUT_OF_RANGE ( -- HRESULT ) 0xC 0x5 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_BAD_LOG_PHY_VALUES ( -- HRESULT ) 0xC 0x6 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_BUFFER_TOO_SMALL ( -- HRESULT ) 0xC 0x7 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_INTERNAL_ERROR ( -- HRESULT ) 0xC 0x8 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_I8042_TRANS_UNKNOWN ( -- HRESULT ) 0xC 0x9 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_INCOMPATIBLE_REPORT_ID ( -- HRESULT ) 0xC 0xA HIDP_ERROR_CODES ; inline
: HIDP_STATUS_NOT_VALUE_ARRAY ( -- HRESULT ) 0xC 0xB HIDP_ERROR_CODES ; inline
: HIDP_STATUS_IS_VALUE_ARRAY ( -- HRESULT ) 0xC 0xC HIDP_ERROR_CODES ; inline
: HIDP_STATUS_DATA_INDEX_NOT_FOUND ( -- HRESULT ) 0xC 0xD HIDP_ERROR_CODES ; inline
: HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE ( -- HRESULT ) 0xC 0xE HIDP_ERROR_CODES ; inline
: HIDP_STATUS_BUTTON_NOT_PRESSED ( -- HRESULT ) 0xC 0xF HIDP_ERROR_CODES ; inline
: HIDP_STATUS_REPORT_DOES_NOT_EXIST ( -- HRESULT ) 0xC 0x10 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_NOT_IMPLEMENTED ( -- HRESULT ) 0xC 0x20 HIDP_ERROR_CODES ; inline
: HIDP_STATUS_I8242_TRANS_UNKNOWN ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
STRUCT: HIDD_CONFIGURATION
{ cookie PVOID }
{ size ULONG }
{ RingBufferSize ULONG } ;
TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
STRUCT: HIDD_ATTRIBUTES
{ Size ULONG }
{ VendorID USHORT }
{ ProductID USHORT }
{ VersionNumber USHORT } ;
TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
FUNCTION: BOOLEAN
HidD_GetAttributes (
HANDLE HidDeviceObject,
PHIDD_ATTRIBUTES Attributes
)
FUNCTION: void
HidD_GetHidGuid (
LPGUID HidGuid
)
FUNCTION: BOOLEAN
HidD_GetPreparsedData (
HANDLE HidDeviceObject,
PHIDP_PREPARSED_DATA* PreparsedData
)
FUNCTION: BOOLEAN
HidD_FreePreparsedData (
PHIDP_PREPARSED_DATA PreparsedData
)
FUNCTION: BOOLEAN
HidD_FlushQueue (
HANDLE HidDeviceObject
)
FUNCTION: BOOLEAN
HidD_GetConfiguration (
HANDLE HidDeviceObject,
PHIDD_CONFIGURATION Configuration,
ULONG ConfigurationLength
)
FUNCTION: BOOLEAN
HidD_SetConfiguration (
HANDLE HidDeviceObject,
PHIDD_CONFIGURATION Configuration,
ULONG ConfigurationLength
)
FUNCTION: BOOLEAN
HidD_GetFeature (
HANDLE HidDeviceObject,
PVOID ReportBuffer,
ULONG ReportBufferLength
)
FUNCTION: BOOLEAN
HidD_SetFeature (
HANDLE HidDeviceObject,
PVOID ReportBuffer,
ULONG ReportBufferLength
)
FUNCTION: BOOLEAN
HidD_GetInputReport (
HANDLE HidDeviceObject,
PVOID ReportBuffer,
ULONG ReportBufferLength
)
FUNCTION: BOOLEAN
HidD_SetOutputReport (
HANDLE HidDeviceObject,
PVOID ReportBuffer,
ULONG ReportBufferLength
)
FUNCTION: BOOLEAN
HidD_GetNumInputBuffers (
HANDLE HidDeviceObject,
PULONG NumberBuffers
)
FUNCTION: BOOLEAN
HidD_SetNumInputBuffers (
HANDLE HidDeviceObject,
ULONG NumberBuffers
)
FUNCTION: BOOLEAN
HidD_GetPhysicalDescriptor (
HANDLE HidDeviceObject,
PVOID Buffer,
ULONG BufferLength
)
FUNCTION: BOOLEAN
HidD_GetManufacturerString (
HANDLE HidDeviceObject,
PVOID Buffer,
ULONG BufferLength
)
FUNCTION: BOOLEAN
HidD_GetProductString (
HANDLE HidDeviceObject,
PVOID Buffer,
ULONG BufferLength
)
FUNCTION: BOOLEAN
HidD_GetIndexedString (
HANDLE HidDeviceObject,
ULONG StringIndex,
PVOID Buffer,
ULONG BufferLength
)
FUNCTION: BOOLEAN
HidD_GetSerialNumberString (
HANDLE HidDeviceObject,
PVOID Buffer,
ULONG BufferLength
)
FUNCTION: BOOLEAN
HidD_GetMsGenreDescriptor (
HANDLE HidDeviceObject,
PVOID Buffer,
ULONG BufferLength
)