Sync with trunk r63270.
[reactos.git] / dll / win32 / xinput1_3 / xinput1_3_main.c
1 /*
2 * The Wine project - Xinput Joystick Library
3 * Copyright 2008 Andrew Fenn
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20 #include <config.h>
21 //#include <assert.h>
22 //#include <stdarg.h>
23 //#include <string.h>
24
25 #include <wine/debug.h>
26 //#include "windef.h"
27 #include <winbase.h>
28 //#include "winerror.h"
29
30 #include <xinput.h>
31
32 WINE_DEFAULT_DEBUG_CHANNEL(xinput);
33
34 BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
35 {
36 switch(reason)
37 {
38 case DLL_WINE_PREATTACH:
39 return FALSE; /* prefer native version */
40 case DLL_PROCESS_ATTACH:
41 DisableThreadLibraryCalls(inst);
42 break;
43 }
44 return TRUE;
45 }
46
47 void WINAPI XInputEnable(BOOL enable)
48 {
49 /* Setting to false will stop messages from XInputSetState being sent
50 to the controllers. Setting to true will send the last vibration
51 value (sent to XInputSetState) to the controller and allow messages to
52 be sent */
53 FIXME("(%d) Stub!\n", enable);
54 }
55
56 DWORD WINAPI XInputSetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration)
57 {
58 FIXME("(%d %p) Stub!\n", dwUserIndex, pVibration);
59
60 if (dwUserIndex < XUSER_MAX_COUNT)
61 {
62 return ERROR_DEVICE_NOT_CONNECTED;
63 /* If controller exists then return ERROR_SUCCESS */
64 }
65 return ERROR_BAD_ARGUMENTS;
66 }
67
68 DWORD WINAPI DECLSPEC_HOTPATCH XInputGetState(DWORD dwUserIndex, XINPUT_STATE* pState)
69 {
70 static int warn_once;
71
72 if (!warn_once++)
73 FIXME("(%u %p)\n", dwUserIndex, pState);
74
75 if (dwUserIndex < XUSER_MAX_COUNT)
76 {
77 return ERROR_DEVICE_NOT_CONNECTED;
78 /* If controller exists then return ERROR_SUCCESS */
79 }
80 return ERROR_BAD_ARGUMENTS;
81 }
82
83 DWORD WINAPI XInputGetKeystroke(DWORD dwUserIndex, DWORD dwReserve, PXINPUT_KEYSTROKE pKeystroke)
84 {
85 FIXME("(%d %d %p) Stub!\n", dwUserIndex, dwReserve, pKeystroke);
86
87 if (dwUserIndex < XUSER_MAX_COUNT)
88 {
89 return ERROR_DEVICE_NOT_CONNECTED;
90 /* If controller exists then return ERROR_SUCCESS */
91 }
92 return ERROR_BAD_ARGUMENTS;
93 }
94
95 DWORD WINAPI XInputGetCapabilities(DWORD dwUserIndex, DWORD dwFlags, XINPUT_CAPABILITIES* pCapabilities)
96 {
97 static int warn_once;
98
99 if (!warn_once++)
100 FIXME("(%d %d %p)\n", dwUserIndex, dwFlags, pCapabilities);
101
102 if (dwUserIndex < XUSER_MAX_COUNT)
103 {
104 return ERROR_DEVICE_NOT_CONNECTED;
105 /* If controller exists then return ERROR_SUCCESS */
106 }
107 return ERROR_BAD_ARGUMENTS;
108 }
109
110 DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD dwUserIndex, GUID* pDSoundRenderGuid, GUID* pDSoundCaptureGuid)
111 {
112 FIXME("(%d %p %p) Stub!\n", dwUserIndex, pDSoundRenderGuid, pDSoundCaptureGuid);
113
114 if (dwUserIndex < XUSER_MAX_COUNT)
115 {
116 return ERROR_DEVICE_NOT_CONNECTED;
117 /* If controller exists then return ERROR_SUCCESS */
118 }
119 return ERROR_BAD_ARGUMENTS;
120 }
121
122 DWORD WINAPI XInputGetBatteryInformation(DWORD dwUserIndex, BYTE deviceType, XINPUT_BATTERY_INFORMATION* pBatteryInfo)
123 {
124 FIXME("(%d %u %p) Stub!\n", dwUserIndex, deviceType, pBatteryInfo);
125
126 if (dwUserIndex < XUSER_MAX_COUNT)
127 {
128 return ERROR_DEVICE_NOT_CONNECTED;
129 /* If controller exists then return ERROR_SUCCESS */
130 }
131 return ERROR_BAD_ARGUMENTS;
132 }