SDL  2.0
SDL_hid.h File Reference
#include "../../SDL_internal.h"
#include "SDL_windows.h"
+ Include dependency graph for SDL_hid.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  PHIDD_ATTRIBUTES
 
struct  HIDP_BUTTON_CAPS
 
struct  HIDP_VALUE_CAPS
 
struct  HIDP_CAPS
 
struct  HIDP_DATA
 

Macros

#define HIDP_ERROR_CODES(p1, p2)   ((NTSTATUS)(((p1) << 28) | (0x11 << 16) | (p2)))
 
#define HIDP_STATUS_SUCCESS   HIDP_ERROR_CODES( 0x0, 0x0000 )
 
#define HIDP_STATUS_NULL   HIDP_ERROR_CODES( 0x8, 0x0001 )
 
#define HIDP_STATUS_INVALID_PREPARSED_DATA   HIDP_ERROR_CODES( 0xC, 0x0001 )
 
#define HIDP_STATUS_INVALID_REPORT_TYPE   HIDP_ERROR_CODES( 0xC, 0x0002 )
 
#define HIDP_STATUS_INVALID_REPORT_LENGTH   HIDP_ERROR_CODES( 0xC, 0x0003 )
 
#define HIDP_STATUS_USAGE_NOT_FOUND   HIDP_ERROR_CODES( 0xC, 0x0004 )
 
#define HIDP_STATUS_VALUE_OUT_OF_RANGE   HIDP_ERROR_CODES( 0xC, 0x0005 )
 
#define HIDP_STATUS_BAD_LOG_PHY_VALUES   HIDP_ERROR_CODES( 0xC, 0x0006 )
 
#define HIDP_STATUS_BUFFER_TOO_SMALL   HIDP_ERROR_CODES( 0xC, 0x0007 )
 
#define HIDP_STATUS_INTERNAL_ERROR   HIDP_ERROR_CODES( 0xC, 0x0008 )
 
#define HIDP_STATUS_I8042_TRANS_UNKNOWN   HIDP_ERROR_CODES( 0xC, 0x0009 )
 
#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID   HIDP_ERROR_CODES( 0xC, 0x000A )
 
#define HIDP_STATUS_NOT_VALUE_ARRAY   HIDP_ERROR_CODES( 0xC, 0x000B )
 
#define HIDP_STATUS_IS_VALUE_ARRAY   HIDP_ERROR_CODES( 0xC, 0x000C )
 
#define HIDP_STATUS_DATA_INDEX_NOT_FOUND   HIDP_ERROR_CODES( 0xC, 0x000D )
 
#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE   HIDP_ERROR_CODES( 0xC, 0x000E )
 
#define HIDP_STATUS_BUTTON_NOT_PRESSED   HIDP_ERROR_CODES( 0xC, 0x000F )
 
#define HIDP_STATUS_REPORT_DOES_NOT_EXIST   HIDP_ERROR_CODES( 0xC, 0x0010 )
 
#define HIDP_STATUS_NOT_IMPLEMENTED   HIDP_ERROR_CODES( 0xC, 0x0020 )
 

Typedefs

typedef LONG NTSTATUS
 
typedef USHORT USAGE
 
typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA
 
typedef struct HIDP_BUTTON_CAPSPHIDP_BUTTON_CAPS
 
typedef struct HIDP_VALUE_CAPSPHIDP_VALUE_CAPS
 
typedef struct HIDP_CAPSPHIDP_CAPS
 
typedef struct HIDP_DATAPHIDP_DATA
 
typedef BOOLEAN(WINAPI * HidD_GetString_t) (HANDLE HidDeviceObject, PVOID Buffer, ULONG BufferLength)
 
typedef BOOLEAN(WINAPI * HidD_GetPreparsedData_t) (HANDLE HidDeviceObject, PHIDP_PREPARSED_DATA *PreparsedData)
 
typedef BOOLEAN(WINAPI * HidD_FreePreparsedData_t) (PHIDP_PREPARSED_DATA PreparsedData)
 
typedef NTSTATUS(WINAPI * HidP_GetCaps_t) (PHIDP_PREPARSED_DATA PreparsedData, PHIDP_CAPS Capabilities)
 
typedef NTSTATUS(WINAPI * HidP_GetButtonCaps_t) (HIDP_REPORT_TYPE ReportType, PHIDP_BUTTON_CAPS ButtonCaps, PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
 
typedef NTSTATUS(WINAPI * HidP_GetValueCaps_t) (HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS ValueCaps, PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
 
typedef ULONG(WINAPI * HidP_MaxDataListLength_t) (HIDP_REPORT_TYPE ReportType, PHIDP_PREPARSED_DATA PreparsedData)
 
typedef NTSTATUS(WINAPI * HidP_GetData_t) (HIDP_REPORT_TYPE ReportType, PHIDP_DATA DataList, PULONG DataLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength)
 

Enumerations

enum  HIDP_REPORT_TYPE {
  HidP_Input = 0 ,
  HidP_Output = 1 ,
  HidP_Feature = 2
}
 

Functions

int WIN_LoadHIDDLL (void)
 
void WIN_UnloadHIDDLL (void)
 

Variables

HidD_GetString_t SDL_HidD_GetManufacturerString
 
HidD_GetString_t SDL_HidD_GetProductString
 
HidD_GetPreparsedData_t SDL_HidD_GetPreparsedData
 
HidD_FreePreparsedData_t SDL_HidD_FreePreparsedData
 
HidP_GetCaps_t SDL_HidP_GetCaps
 
HidP_GetButtonCaps_t SDL_HidP_GetButtonCaps
 
HidP_GetValueCaps_t SDL_HidP_GetValueCaps
 
HidP_MaxDataListLength_t SDL_HidP_MaxDataListLength
 
HidP_GetData_t SDL_HidP_GetData
 

Macro Definition Documentation

◆ HIDP_ERROR_CODES

#define HIDP_ERROR_CODES (   p1,
  p2 
)    ((NTSTATUS)(((p1) << 28) | (0x11 << 16) | (p2)))

Definition at line 160 of file SDL_hid.h.

◆ HIDP_STATUS_BAD_LOG_PHY_VALUES

#define HIDP_STATUS_BAD_LOG_PHY_VALUES   HIDP_ERROR_CODES( 0xC, 0x0006 )

Definition at line 168 of file SDL_hid.h.

◆ HIDP_STATUS_BUFFER_TOO_SMALL

#define HIDP_STATUS_BUFFER_TOO_SMALL   HIDP_ERROR_CODES( 0xC, 0x0007 )

Definition at line 169 of file SDL_hid.h.

◆ HIDP_STATUS_BUTTON_NOT_PRESSED

#define HIDP_STATUS_BUTTON_NOT_PRESSED   HIDP_ERROR_CODES( 0xC, 0x000F )

Definition at line 177 of file SDL_hid.h.

◆ HIDP_STATUS_DATA_INDEX_NOT_FOUND

#define HIDP_STATUS_DATA_INDEX_NOT_FOUND   HIDP_ERROR_CODES( 0xC, 0x000D )

Definition at line 175 of file SDL_hid.h.

◆ HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE

#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE   HIDP_ERROR_CODES( 0xC, 0x000E )

Definition at line 176 of file SDL_hid.h.

◆ HIDP_STATUS_I8042_TRANS_UNKNOWN

#define HIDP_STATUS_I8042_TRANS_UNKNOWN   HIDP_ERROR_CODES( 0xC, 0x0009 )

Definition at line 171 of file SDL_hid.h.

◆ HIDP_STATUS_INCOMPATIBLE_REPORT_ID

#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID   HIDP_ERROR_CODES( 0xC, 0x000A )

Definition at line 172 of file SDL_hid.h.

◆ HIDP_STATUS_INTERNAL_ERROR

#define HIDP_STATUS_INTERNAL_ERROR   HIDP_ERROR_CODES( 0xC, 0x0008 )

Definition at line 170 of file SDL_hid.h.

◆ HIDP_STATUS_INVALID_PREPARSED_DATA

#define HIDP_STATUS_INVALID_PREPARSED_DATA   HIDP_ERROR_CODES( 0xC, 0x0001 )

Definition at line 163 of file SDL_hid.h.

◆ HIDP_STATUS_INVALID_REPORT_LENGTH

#define HIDP_STATUS_INVALID_REPORT_LENGTH   HIDP_ERROR_CODES( 0xC, 0x0003 )

Definition at line 165 of file SDL_hid.h.

◆ HIDP_STATUS_INVALID_REPORT_TYPE

#define HIDP_STATUS_INVALID_REPORT_TYPE   HIDP_ERROR_CODES( 0xC, 0x0002 )

Definition at line 164 of file SDL_hid.h.

◆ HIDP_STATUS_IS_VALUE_ARRAY

#define HIDP_STATUS_IS_VALUE_ARRAY   HIDP_ERROR_CODES( 0xC, 0x000C )

Definition at line 174 of file SDL_hid.h.

◆ HIDP_STATUS_NOT_IMPLEMENTED

#define HIDP_STATUS_NOT_IMPLEMENTED   HIDP_ERROR_CODES( 0xC, 0x0020 )

Definition at line 179 of file SDL_hid.h.

◆ HIDP_STATUS_NOT_VALUE_ARRAY

#define HIDP_STATUS_NOT_VALUE_ARRAY   HIDP_ERROR_CODES( 0xC, 0x000B )

Definition at line 173 of file SDL_hid.h.

◆ HIDP_STATUS_NULL

#define HIDP_STATUS_NULL   HIDP_ERROR_CODES( 0x8, 0x0001 )

Definition at line 162 of file SDL_hid.h.

◆ HIDP_STATUS_REPORT_DOES_NOT_EXIST

#define HIDP_STATUS_REPORT_DOES_NOT_EXIST   HIDP_ERROR_CODES( 0xC, 0x0010 )

Definition at line 178 of file SDL_hid.h.

◆ HIDP_STATUS_SUCCESS

#define HIDP_STATUS_SUCCESS   HIDP_ERROR_CODES( 0x0, 0x0000 )

Definition at line 161 of file SDL_hid.h.

◆ HIDP_STATUS_USAGE_NOT_FOUND

#define HIDP_STATUS_USAGE_NOT_FOUND   HIDP_ERROR_CODES( 0xC, 0x0004 )

Definition at line 166 of file SDL_hid.h.

◆ HIDP_STATUS_VALUE_OUT_OF_RANGE

#define HIDP_STATUS_VALUE_OUT_OF_RANGE   HIDP_ERROR_CODES( 0xC, 0x0005 )

Definition at line 167 of file SDL_hid.h.

Typedef Documentation

◆ HidD_FreePreparsedData_t

typedef BOOLEAN(WINAPI * HidD_FreePreparsedData_t) (PHIDP_PREPARSED_DATA PreparsedData)

Definition at line 187 of file SDL_hid.h.

◆ HidD_GetPreparsedData_t

typedef BOOLEAN(WINAPI * HidD_GetPreparsedData_t) (HANDLE HidDeviceObject, PHIDP_PREPARSED_DATA *PreparsedData)

Definition at line 186 of file SDL_hid.h.

◆ HidD_GetString_t

typedef BOOLEAN(WINAPI * HidD_GetString_t) (HANDLE HidDeviceObject, PVOID Buffer, ULONG BufferLength)

Definition at line 185 of file SDL_hid.h.

◆ HidP_GetButtonCaps_t

typedef NTSTATUS(WINAPI * HidP_GetButtonCaps_t) (HIDP_REPORT_TYPE ReportType, PHIDP_BUTTON_CAPS ButtonCaps, PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData)

Definition at line 189 of file SDL_hid.h.

◆ HidP_GetCaps_t

typedef NTSTATUS(WINAPI * HidP_GetCaps_t) (PHIDP_PREPARSED_DATA PreparsedData, PHIDP_CAPS Capabilities)

Definition at line 188 of file SDL_hid.h.

◆ HidP_GetData_t

typedef NTSTATUS(WINAPI * HidP_GetData_t) (HIDP_REPORT_TYPE ReportType, PHIDP_DATA DataList, PULONG DataLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength)

Definition at line 192 of file SDL_hid.h.

◆ HidP_GetValueCaps_t

typedef NTSTATUS(WINAPI * HidP_GetValueCaps_t) (HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS ValueCaps, PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData)

Definition at line 190 of file SDL_hid.h.

◆ HidP_MaxDataListLength_t

typedef ULONG(WINAPI * HidP_MaxDataListLength_t) (HIDP_REPORT_TYPE ReportType, PHIDP_PREPARSED_DATA PreparsedData)

Definition at line 191 of file SDL_hid.h.

◆ NTSTATUS

typedef LONG NTSTATUS

Definition at line 30 of file SDL_hid.h.

◆ PHIDP_BUTTON_CAPS

◆ PHIDP_CAPS

typedef struct HIDP_CAPS * PHIDP_CAPS

◆ PHIDP_DATA

typedef struct HIDP_DATA * PHIDP_DATA

◆ PHIDP_PREPARSED_DATA

typedef struct _HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA

Definition at line 32 of file SDL_hid.h.

◆ PHIDP_VALUE_CAPS

◆ USAGE

typedef USHORT USAGE

Definition at line 31 of file SDL_hid.h.

Enumeration Type Documentation

◆ HIDP_REPORT_TYPE

Enumerator
HidP_Input 
HidP_Output 
HidP_Feature 

Definition at line 42 of file SDL_hid.h.

42  {
43  HidP_Input = 0,
44  HidP_Output = 1,
45  HidP_Feature = 2
HIDP_REPORT_TYPE
Definition: SDL_hid.h:42
@ HidP_Input
Definition: SDL_hid.h:43
@ HidP_Feature
Definition: SDL_hid.h:45
@ HidP_Output
Definition: SDL_hid.h:44

Function Documentation

◆ WIN_LoadHIDDLL()

int WIN_LoadHIDDLL ( void  )

Definition at line 43 of file SDL_hid.c.

44 {
45  if (s_pHIDDLL) {
48  return 0; /* already loaded */
49  }
50 
51  s_pHIDDLL = LoadLibrary(L"hid.dll");
52  if (!s_pHIDDLL) {
53  return -1;
54  }
55 
57  s_HIDDLLRefCount = 1;
58 
59  SDL_HidD_GetManufacturerString = (HidD_GetString_t)GetProcAddress(s_pHIDDLL, "HidD_GetManufacturerString");
60  SDL_HidD_GetProductString = (HidD_GetString_t)GetProcAddress(s_pHIDDLL, "HidD_GetProductString");
61  SDL_HidD_GetPreparsedData = (HidD_GetPreparsedData_t)GetProcAddress(s_pHIDDLL, "HidD_GetPreparsedData");
62  SDL_HidD_FreePreparsedData = (HidD_FreePreparsedData_t)GetProcAddress(s_pHIDDLL, "HidD_FreePreparsedData");
63  SDL_HidP_GetCaps = (HidP_GetCaps_t)GetProcAddress(s_pHIDDLL, "HidP_GetCaps");
64  SDL_HidP_GetButtonCaps = (HidP_GetButtonCaps_t)GetProcAddress(s_pHIDDLL, "HidP_GetButtonCaps");
65  SDL_HidP_GetValueCaps = (HidP_GetValueCaps_t)GetProcAddress(s_pHIDDLL, "HidP_GetValueCaps");
66  SDL_HidP_MaxDataListLength = (HidP_MaxDataListLength_t)GetProcAddress(s_pHIDDLL, "HidP_MaxDataListLength");
67  SDL_HidP_GetData = (HidP_GetData_t)GetProcAddress(s_pHIDDLL, "HidP_GetData");
72  return -1;
73  }
74 
75  return 0;
76 }
#define SDL_assert(condition)
Definition: SDL_assert.h:171
HidD_FreePreparsedData_t SDL_HidD_FreePreparsedData
Definition: SDL_hid.c:31
HidP_GetCaps_t SDL_HidP_GetCaps
Definition: SDL_hid.c:32
HidP_GetButtonCaps_t SDL_HidP_GetButtonCaps
Definition: SDL_hid.c:33
HidD_GetString_t SDL_HidD_GetManufacturerString
Definition: SDL_hid.c:28
HidD_GetPreparsedData_t SDL_HidD_GetPreparsedData
Definition: SDL_hid.c:30
void WIN_UnloadHIDDLL(void)
Definition: SDL_hid.c:79
static HMODULE s_pHIDDLL
Definition: SDL_hid.c:38
HidP_MaxDataListLength_t SDL_HidP_MaxDataListLength
Definition: SDL_hid.c:35
HidP_GetValueCaps_t SDL_HidP_GetValueCaps
Definition: SDL_hid.c:34
static int s_HIDDLLRefCount
Definition: SDL_hid.c:39
HidP_GetData_t SDL_HidP_GetData
Definition: SDL_hid.c:36
HidD_GetString_t SDL_HidD_GetProductString
Definition: SDL_hid.c:29
BOOLEAN(WINAPI * HidD_GetString_t)(HANDLE HidDeviceObject, PVOID Buffer, ULONG BufferLength)
Definition: SDL_hid.h:185
NTSTATUS(WINAPI * HidP_GetValueCaps_t)(HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS ValueCaps, PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
Definition: SDL_hid.h:190
NTSTATUS(WINAPI * HidP_GetCaps_t)(PHIDP_PREPARSED_DATA PreparsedData, PHIDP_CAPS Capabilities)
Definition: SDL_hid.h:188
BOOLEAN(WINAPI * HidD_GetPreparsedData_t)(HANDLE HidDeviceObject, PHIDP_PREPARSED_DATA *PreparsedData)
Definition: SDL_hid.h:186
NTSTATUS(WINAPI * HidP_GetData_t)(HIDP_REPORT_TYPE ReportType, PHIDP_DATA DataList, PULONG DataLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength)
Definition: SDL_hid.h:192
BOOLEAN(WINAPI * HidD_FreePreparsedData_t)(PHIDP_PREPARSED_DATA PreparsedData)
Definition: SDL_hid.h:187
NTSTATUS(WINAPI * HidP_GetButtonCaps_t)(HIDP_REPORT_TYPE ReportType, PHIDP_BUTTON_CAPS ButtonCaps, PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
Definition: SDL_hid.h:189
ULONG(WINAPI * HidP_MaxDataListLength_t)(HIDP_REPORT_TYPE ReportType, PHIDP_PREPARSED_DATA PreparsedData)
Definition: SDL_hid.h:191

References s_HIDDLLRefCount, s_pHIDDLL, SDL_assert, SDL_HidD_FreePreparsedData, SDL_HidD_GetManufacturerString, SDL_HidD_GetPreparsedData, SDL_HidD_GetProductString, SDL_HidP_GetButtonCaps, SDL_HidP_GetCaps, SDL_HidP_GetData, SDL_HidP_GetValueCaps, SDL_HidP_MaxDataListLength, and WIN_UnloadHIDDLL().

◆ WIN_UnloadHIDDLL()

void WIN_UnloadHIDDLL ( void  )

Definition at line 79 of file SDL_hid.c.

80 {
81  if (s_pHIDDLL) {
83  if (--s_HIDDLLRefCount == 0) {
84  FreeLibrary(s_pHIDDLL);
85  s_pHIDDLL = NULL;
86  }
87  } else {
89  }
90 }
#define NULL
Definition: begin_code.h:163

References NULL, s_HIDDLLRefCount, s_pHIDDLL, and SDL_assert.

Referenced by WIN_LoadHIDDLL().

Variable Documentation

◆ SDL_HidD_FreePreparsedData

HidD_FreePreparsedData_t SDL_HidD_FreePreparsedData
extern

Definition at line 31 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidD_GetManufacturerString

HidD_GetString_t SDL_HidD_GetManufacturerString
extern

Definition at line 28 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidD_GetPreparsedData

HidD_GetPreparsedData_t SDL_HidD_GetPreparsedData
extern

Definition at line 30 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidD_GetProductString

HidD_GetString_t SDL_HidD_GetProductString
extern

Definition at line 29 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidP_GetButtonCaps

HidP_GetButtonCaps_t SDL_HidP_GetButtonCaps
extern

Definition at line 33 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidP_GetCaps

HidP_GetCaps_t SDL_HidP_GetCaps
extern

Definition at line 32 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidP_GetData

HidP_GetData_t SDL_HidP_GetData
extern

Definition at line 36 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidP_GetValueCaps

HidP_GetValueCaps_t SDL_HidP_GetValueCaps
extern

Definition at line 34 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().

◆ SDL_HidP_MaxDataListLength

HidP_MaxDataListLength_t SDL_HidP_MaxDataListLength
extern

Definition at line 35 of file SDL_hid.c.

Referenced by WIN_LoadHIDDLL().