ReactOS  0.4.14-dev-604-gcfdd483
dinput_private.h File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "dinput.h"
#include "dinputd.h"
#include "wine/list.h"
Include dependency graph for dinput_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  IDirectInputImpl
 
struct  dinput_device
 
struct  DevicePlayer
 

Macros

#define IS_DIPROP(x)   (((ULONG_PTR)(x) >> 16) == 0)
 
#define DIKEYBOARD_MASK   0x81000000
 
#define DIMOUSE_MASK   0x82000000
 
#define DIGENRE_ANY   0xFF000000
 

Typedefs

typedef struct IDirectInputImpl IDirectInputImpl
 
typedef int(* DI_EVENT_PROC) (LPDIRECTINPUTDEVICE8A, WPARAM, LPARAM)
 

Functions

void check_dinput_hooks (LPDIRECTINPUTDEVICE8W, BOOL) DECLSPEC_HIDDEN
 
void check_dinput_events (void) DECLSPEC_HIDDEN
 
void _copy_diactionformatAtoW (LPDIACTIONFORMATW, LPDIACTIONFORMATA) DECLSPEC_HIDDEN
 
void _copy_diactionformatWtoA (LPDIACTIONFORMATA, LPDIACTIONFORMATW) DECLSPEC_HIDDEN
 
HRESULT _configure_devices (IDirectInput8W *iface, LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) DECLSPEC_HIDDEN
 
WCHARget_mapping_path (const WCHAR *device, const WCHAR *username) DECLSPEC_HIDDEN
 
DWORD get_device_type (DWORD version, BOOL is_joystick) DECLSPEC_HIDDEN
 

Variables

HINSTANCE DINPUT_instance
 
const struct dinput_device mouse_device DECLSPEC_HIDDEN
 

Macro Definition Documentation

◆ DIGENRE_ANY

#define DIGENRE_ANY   0xFF000000

Definition at line 90 of file dinput_private.h.

◆ DIKEYBOARD_MASK

#define DIKEYBOARD_MASK   0x81000000

Definition at line 88 of file dinput_private.h.

◆ DIMOUSE_MASK

#define DIMOUSE_MASK   0x82000000

Definition at line 89 of file dinput_private.h.

◆ IS_DIPROP

#define IS_DIPROP (   x)    (((ULONG_PTR)(x) >> 16) == 0)

Definition at line 86 of file dinput_private.h.

Typedef Documentation

◆ DI_EVENT_PROC

typedef int(* DI_EVENT_PROC) (LPDIRECTINPUTDEVICE8A, WPARAM, LPARAM)

Definition at line 76 of file dinput_private.h.

◆ IDirectInputImpl

Definition at line 33 of file dinput_private.h.

Function Documentation

◆ _configure_devices()

HRESULT _configure_devices ( IDirectInput8W *  iface,
LPDICONFIGUREDEVICESCALLBACK  lpdiCallback,
LPDICONFIGUREDEVICESPARAMSW  lpdiCDParams,
DWORD  dwFlags,
LPVOID  pvRefData 
)

Definition at line 493 of file config.c.

499 {
500  int i;
501  DWORD size;
502  WCHAR *username = NULL;
504  data.lpDI = iface;
505  data.original_lpdiaf = lpdiCDParams->lprgFormats;
506  data.display_only = !(dwFlags & DICD_EDIT);
507  data.nusernames = lpdiCDParams->dwcUsers;
508  if (lpdiCDParams->lptszUserNames == NULL)
509  {
510  /* Get default user name */
512  username = heap_alloc(size * sizeof(WCHAR) );
514  data.nusernames = 1;
515  data.usernames = heap_alloc(sizeof(WCHAR *));
516  data.usernames[0] = username;
517  }
518  else
519  {
520  WCHAR *p = lpdiCDParams->lptszUserNames;
521  data.usernames = heap_alloc(sizeof(WCHAR *) * data.nusernames);
522  for (i = 0; i < data.nusernames; i++)
523  {
524  if (*p)
525  {
526  data.usernames[i] = p;
527  while (*(p++));
528  }
529  else
530  /* Return if there is an empty string */
531  return DIERR_INVALIDPARAM;
532  }
533  }
534 
536 
538  lpdiCDParams->hwnd, ConfigureDevicesDlgProc, (LPARAM)&data);
539 
541  heap_free(data.usernames);
542 
543  return DI_OK;
544 }
#define MAKEINTRESOURCE
Definition: winuser.h:591
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HINSTANCE DINPUT_instance
Definition: dinput_main.c:98
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
static WCHAR username[]
Definition: url.c:32
#define DIERR_INVALIDPARAM
Definition: dinput.h:152
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
Definition: misc.c:291
GLsizeiptr size
Definition: glext.h:5919
__wchar_t WCHAR
Definition: xmlstorage.h:180
LPDIACTIONFORMATW lprgFormats
Definition: dinput.h:1399
#define DICD_EDIT
Definition: dinput.h:1362
#define IDD_CONFIGUREDEVICES
Definition: resource.h:23
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: config.c:401
#define DI_OK
Definition: dinput.h:128
VOID WINAPI InitCommonControls(void)
Definition: commctrl.c:863
GLfloat GLfloat p
Definition: glext.h:8902
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by IDirectInput8WImpl_ConfigureDevices().

◆ _copy_diactionformatAtoW()

void _copy_diactionformatAtoW ( LPDIACTIONFORMATW  ,
LPDIACTIONFORMATA   
)

Definition at line 339 of file dinput_main.c.

340 {
341  int i;
342 
343  to->dwSize = sizeof(DIACTIONFORMATW);
344  to->dwActionSize = sizeof(DIACTIONW);
345  to->dwDataSize = from->dwDataSize;
346  to->dwNumActions = from->dwNumActions;
347  to->guidActionMap = from->guidActionMap;
348  to->dwGenre = from->dwGenre;
349  to->dwBufferSize = from->dwBufferSize;
350  to->lAxisMin = from->lAxisMin;
351  to->lAxisMax = from->lAxisMax;
352  to->dwCRC = from->dwCRC;
353  to->ftTimeStamp = from->ftTimeStamp;
354 
355  for (i=0; i < to->dwNumActions; i++)
356  {
357  to->rgoAction[i].uAppData = from->rgoAction[i].uAppData;
358  to->rgoAction[i].dwSemantic = from->rgoAction[i].dwSemantic;
359  to->rgoAction[i].dwFlags = from->rgoAction[i].dwFlags;
360  to->rgoAction[i].guidInstance = from->rgoAction[i].guidInstance;
361  to->rgoAction[i].dwObjID = from->rgoAction[i].dwObjID;
362  to->rgoAction[i].dwHow = from->rgoAction[i].dwHow;
363  }
364 }
struct _DIACTIONW DIACTIONW
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _DIACTIONFORMATW DIACTIONFORMATW
CardRegion * from
Definition: spigame.cpp:19

Referenced by IDirectInput8AImpl_ConfigureDevices(), JoystickAGenericImpl_BuildActionMap(), JoystickAGenericImpl_SetActionMap(), SysKeyboardAImpl_BuildActionMap(), SysKeyboardAImpl_SetActionMap(), SysMouseAImpl_BuildActionMap(), and SysMouseAImpl_SetActionMap().

◆ _copy_diactionformatWtoA()

void _copy_diactionformatWtoA ( LPDIACTIONFORMATA  ,
LPDIACTIONFORMATW   
)

Definition at line 366 of file dinput_main.c.

367 {
368  int i;
369 
370  to->dwSize = sizeof(DIACTIONFORMATA);
371  to->dwActionSize = sizeof(DIACTIONA);
372  to->dwDataSize = from->dwDataSize;
373  to->dwNumActions = from->dwNumActions;
374  to->guidActionMap = from->guidActionMap;
375  to->dwGenre = from->dwGenre;
376  to->dwBufferSize = from->dwBufferSize;
377  to->lAxisMin = from->lAxisMin;
378  to->lAxisMax = from->lAxisMax;
379  to->dwCRC = from->dwCRC;
380  to->ftTimeStamp = from->ftTimeStamp;
381 
382  for (i=0; i < to->dwNumActions; i++)
383  {
384  to->rgoAction[i].uAppData = from->rgoAction[i].uAppData;
385  to->rgoAction[i].dwSemantic = from->rgoAction[i].dwSemantic;
386  to->rgoAction[i].dwFlags = from->rgoAction[i].dwFlags;
387  to->rgoAction[i].guidInstance = from->rgoAction[i].guidInstance;
388  to->rgoAction[i].dwObjID = from->rgoAction[i].dwObjID;
389  to->rgoAction[i].dwHow = from->rgoAction[i].dwHow;
390  }
391 }
struct _DIACTIONFORMATA DIACTIONFORMATA
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _DIACTIONA DIACTIONA
CardRegion * from
Definition: spigame.cpp:19

Referenced by IDirectInput8AImpl_ConfigureDevices(), JoystickAGenericImpl_BuildActionMap(), SysKeyboardAImpl_BuildActionMap(), and SysMouseAImpl_BuildActionMap().

◆ check_dinput_events()

void check_dinput_events ( void  )

Definition at line 1900 of file dinput_main.c.

1901 {
1902  /* Windows does not do that, but our current implementation of winex11
1903  * requires periodic event polling to forward events to the wineserver.
1904  *
1905  * We have to call this function from multiple places, because:
1906  * - some games do not explicitly poll for mouse events
1907  * (for example Culpa Innata)
1908  * - some games only poll the device, and neither keyboard nor mouse
1909  * (for example Civilization: Call to Power 2)
1910  */
1911 #ifndef __REACTOS__
1913 #endif
1914 }
DWORD WINAPI MsgWaitForMultipleObjectsEx(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask, _In_ DWORD dwFlags)
smooth NULL
Definition: ftsmooth.c:416
#define QS_ALLINPUT
Definition: winuser.h:874

Referenced by IDirectInputDevice2WImpl_Poll(), SysKeyboardWImpl_GetDeviceState(), and SysMouseWImpl_GetDeviceState().

◆ check_dinput_hooks()

void check_dinput_hooks ( LPDIRECTINPUTDEVICE8W  ,
BOOL   
)

Definition at line 1863 of file dinput_main.c.

1864 {
1865  static HHOOK callwndproc_hook;
1866  static ULONG foreground_cnt;
1868 
1870 
1871  if (dev->dwCoopLevel & DISCL_FOREGROUND)
1872  {
1873  if (acquired)
1874  foreground_cnt++;
1875  else
1876  foreground_cnt--;
1877  }
1878 
1879  if (foreground_cnt && !callwndproc_hook)
1880  callwndproc_hook = SetWindowsHookExW( WH_CALLWNDPROC, callwndproc_proc,
1882  else if (!foreground_cnt && callwndproc_hook)
1883  {
1884  UnhookWindowsHookEx( callwndproc_hook );
1885  callwndproc_hook = NULL;
1886  }
1887 
1888  if (hook_thread_event) /* if thread is not started yet */
1889  {
1893  }
1894 
1895  PostThreadMessageW( hook_thread_id, WM_USER+0x10, 1, 0 );
1896 
1898 }
#define CloseHandle
Definition: compat.h:406
static CRITICAL_SECTION dinput_hook_crit
Definition: dinput_main.c:101
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
HINSTANCE DINPUT_instance
Definition: dinput_main.c:98
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
smooth NULL
Definition: ftsmooth.c:416
static DWORD hook_thread_id
Definition: dinput_main.c:1817
DWORD WINAPI GetCurrentThreadId(VOID)
Definition: thread.c:458
#define DISCL_FOREGROUND
Definition: dinput.h:965
#define WH_CALLWNDPROC
Definition: winuser.h:34
#define WM_USER
Definition: winuser.h:1877
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
static IDirectInputDeviceImpl * impl_from_IDirectInputDevice8W(IDirectInputDevice8W *iface)
Definition: dinput_main.c:84
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
unsigned int ULONG
Definition: retypes.h:1
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define INFINITE
Definition: serial.h:102
static HANDLE hook_thread_event
Definition: dinput_main.c:1818
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static LRESULT CALLBACK callwndproc_proc(int code, WPARAM wparam, LPARAM lparam)
Definition: dinput_main.c:1709

Referenced by IDirectInputDevice2WImpl_Acquire(), and IDirectInputDevice2WImpl_Unacquire().

◆ get_device_type()

DWORD get_device_type ( DWORD  version,
BOOL  is_joystick 
)

Definition at line 107 of file joystick.c.

108 {
109  if (is_joystick)
110  return version >= 0x0800 ? DI8DEVTYPE_JOYSTICK | (DI8DEVTYPEJOYSTICK_STANDARD << 8) :
112 
113  return version >= 0x0800 ? DI8DEVTYPE_GAMEPAD | (DI8DEVTYPEJOYSTICK_STANDARD << 8) :
115 }
#define DIDEVTYPEJOYSTICK_GAMEPAD
Definition: dinput.h:245
static const WCHAR version[]
Definition: asmname.c:66
#define DIDEVTYPE_JOYSTICK
Definition: dinput.h:200
#define DI8DEVTYPEJOYSTICK_STANDARD
Definition: dinput.h:274
#define DI8DEVTYPE_GAMEPAD
Definition: dinput.h:213
#define DIDEVTYPEJOYSTICK_TRADITIONAL
Definition: dinput.h:243
#define DI8DEVTYPE_JOYSTICK
Definition: dinput.h:212

◆ get_mapping_path()

WCHAR* get_mapping_path ( const WCHAR device,
const WCHAR username 
)

Variable Documentation

◆ DECLSPEC_HIDDEN

Definition at line 69 of file dinput_private.h.

◆ DINPUT_instance