1 /* 2 * Copyright (C) the Wine project 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19 #ifndef __DINPUT_INCLUDED__ 20 #define __DINPUT_INCLUDED__ 21 22 #define COM_NO_WINDOWS_H 23 #include <objbase.h> 24 25 #ifndef DIRECTINPUT_VERSION 26 #define DIRECTINPUT_VERSION 0x0800 27 #endif 28 29 /* Classes */ 30 DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 31 DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 32 33 DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 34 DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 35 36 /* Interfaces */ 37 DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 38 DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 39 DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 40 DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 41 DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 42 DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 43 DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 44 DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 45 DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 46 DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 47 DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 48 DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 49 DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 50 DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 51 DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 52 DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 53 DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 54 55 /* Predefined object types */ 56 DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 57 DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 58 DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 59 DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 60 DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 61 DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 62 DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 63 DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 64 DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 65 DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 66 DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 67 68 /* Predefined product GUIDs */ 69 DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 70 DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 71 DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 72 DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 73 DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 74 DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 75 DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 76 77 /* predefined forcefeedback effects */ 78 DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 79 DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 80 DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 81 DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 82 DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 83 DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 84 DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 85 DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 86 DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 87 DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 88 DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 89 DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 90 91 typedef struct IDirectInputA *LPDIRECTINPUTA; 92 typedef struct IDirectInputW *LPDIRECTINPUTW; 93 typedef struct IDirectInput2A *LPDIRECTINPUT2A; 94 typedef struct IDirectInput2W *LPDIRECTINPUT2W; 95 typedef struct IDirectInput7A *LPDIRECTINPUT7A; 96 typedef struct IDirectInput7W *LPDIRECTINPUT7W; 97 typedef struct IDirectInput8A *LPDIRECTINPUT8A; 98 typedef struct IDirectInput8W *LPDIRECTINPUT8W; 99 typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; 100 typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; 101 typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; 102 typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; 103 typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; 104 typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; 105 typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; 106 typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; 107 typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; 108 typedef struct SysKeyboardA *LPSYSKEYBOARDA; 109 typedef struct SysMouseA *LPSYSMOUSEA; 110 111 #define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput) 112 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT) 113 #define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2) 114 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2) 115 #define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7) 116 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7) 117 #define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8) 118 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8) 119 #define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice) 120 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE) 121 #define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2) 122 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2) 123 #define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7) 124 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7) 125 #define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8) 126 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8) 127 128 #define DI_OK S_OK 129 #define DI_NOTATTACHED S_FALSE 130 #define DI_BUFFEROVERFLOW S_FALSE 131 #define DI_PROPNOEFFECT S_FALSE 132 #define DI_NOEFFECT S_FALSE 133 #define DI_POLLEDDEVICE ((HRESULT)0x00000002) 134 #define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003) 135 #define DI_EFFECTRESTARTED ((HRESULT)0x00000004) 136 #define DI_TRUNCATED ((HRESULT)0x00000008) 137 #define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000B) 138 #define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000C) 139 #define DI_WRITEPROTECT ((HRESULT)0x00000013) 140 141 #define DIERR_OLDDIRECTINPUTVERSION \ 142 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) 143 #define DIERR_BETADIRECTINPUTVERSION \ 144 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) 145 #define DIERR_BADDRIVERVER \ 146 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) 147 #define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG 148 #define DIERR_NOTFOUND \ 149 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) 150 #define DIERR_OBJECTNOTFOUND \ 151 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) 152 #define DIERR_INVALIDPARAM E_INVALIDARG 153 #define DIERR_NOINTERFACE E_NOINTERFACE 154 #define DIERR_GENERIC E_FAIL 155 #define DIERR_OUTOFMEMORY E_OUTOFMEMORY 156 #define DIERR_UNSUPPORTED E_NOTIMPL 157 #define DIERR_NOTINITIALIZED \ 158 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) 159 #define DIERR_ALREADYINITIALIZED \ 160 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) 161 #define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION 162 #define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED 163 #define DIERR_INPUTLOST \ 164 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) 165 #define DIERR_ACQUIRED \ 166 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) 167 #define DIERR_NOTACQUIRED \ 168 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) 169 #define DIERR_READONLY E_ACCESSDENIED 170 #define DIERR_HANDLEEXISTS E_ACCESSDENIED 171 #ifndef E_PENDING 172 #define E_PENDING 0x8000000AL 173 #endif 174 #define DIERR_INSUFFICIENTPRIVS 0x80040200L 175 #define DIERR_DEVICEFULL 0x80040201L 176 #define DIERR_MOREDATA 0x80040202L 177 #define DIERR_NOTDOWNLOADED 0x80040203L 178 #define DIERR_HASEFFECTS 0x80040204L 179 #define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L 180 #define DIERR_INCOMPLETEEFFECT 0x80040206L 181 #define DIERR_NOTBUFFERED 0x80040207L 182 #define DIERR_EFFECTPLAYING 0x80040208L 183 #define DIERR_UNPLUGGED 0x80040209L 184 #define DIERR_REPORTFULL 0x8004020AL 185 #define DIERR_MAPFILEFAIL 0x8004020BL 186 187 #define DIENUM_STOP 0 188 #define DIENUM_CONTINUE 1 189 190 #define DIEDFL_ALLDEVICES 0x00000000 191 #define DIEDFL_ATTACHEDONLY 0x00000001 192 #define DIEDFL_FORCEFEEDBACK 0x00000100 193 #define DIEDFL_INCLUDEALIASES 0x00010000 194 #define DIEDFL_INCLUDEPHANTOMS 0x00020000 195 #define DIEDFL_INCLUDEHIDDEN 0x00040000 196 197 #define DIDEVTYPE_DEVICE 1 198 #define DIDEVTYPE_MOUSE 2 199 #define DIDEVTYPE_KEYBOARD 3 200 #define DIDEVTYPE_JOYSTICK 4 201 #define DIDEVTYPE_HID 0x00010000 202 203 #define DI8DEVCLASS_ALL 0 204 #define DI8DEVCLASS_DEVICE 1 205 #define DI8DEVCLASS_POINTER 2 206 #define DI8DEVCLASS_KEYBOARD 3 207 #define DI8DEVCLASS_GAMECTRL 4 208 209 #define DI8DEVTYPE_DEVICE 0x11 210 #define DI8DEVTYPE_MOUSE 0x12 211 #define DI8DEVTYPE_KEYBOARD 0x13 212 #define DI8DEVTYPE_JOYSTICK 0x14 213 #define DI8DEVTYPE_GAMEPAD 0x15 214 #define DI8DEVTYPE_DRIVING 0x16 215 #define DI8DEVTYPE_FLIGHT 0x17 216 #define DI8DEVTYPE_1STPERSON 0x18 217 #define DI8DEVTYPE_DEVICECTRL 0x19 218 #define DI8DEVTYPE_SCREENPOINTER 0x1A 219 #define DI8DEVTYPE_REMOTE 0x1B 220 #define DI8DEVTYPE_SUPPLEMENTAL 0x1C 221 222 #define DIDEVTYPEMOUSE_UNKNOWN 1 223 #define DIDEVTYPEMOUSE_TRADITIONAL 2 224 #define DIDEVTYPEMOUSE_FINGERSTICK 3 225 #define DIDEVTYPEMOUSE_TOUCHPAD 4 226 #define DIDEVTYPEMOUSE_TRACKBALL 5 227 228 #define DIDEVTYPEKEYBOARD_UNKNOWN 0 229 #define DIDEVTYPEKEYBOARD_PCXT 1 230 #define DIDEVTYPEKEYBOARD_OLIVETTI 2 231 #define DIDEVTYPEKEYBOARD_PCAT 3 232 #define DIDEVTYPEKEYBOARD_PCENH 4 233 #define DIDEVTYPEKEYBOARD_NOKIA1050 5 234 #define DIDEVTYPEKEYBOARD_NOKIA9140 6 235 #define DIDEVTYPEKEYBOARD_NEC98 7 236 #define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 237 #define DIDEVTYPEKEYBOARD_NEC98106 9 238 #define DIDEVTYPEKEYBOARD_JAPAN106 10 239 #define DIDEVTYPEKEYBOARD_JAPANAX 11 240 #define DIDEVTYPEKEYBOARD_J3100 12 241 242 #define DIDEVTYPEJOYSTICK_UNKNOWN 1 243 #define DIDEVTYPEJOYSTICK_TRADITIONAL 2 244 #define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 245 #define DIDEVTYPEJOYSTICK_GAMEPAD 4 246 #define DIDEVTYPEJOYSTICK_RUDDER 5 247 #define DIDEVTYPEJOYSTICK_WHEEL 6 248 #define DIDEVTYPEJOYSTICK_HEADTRACKER 7 249 250 #define DI8DEVTYPEMOUSE_UNKNOWN 1 251 #define DI8DEVTYPEMOUSE_TRADITIONAL 2 252 #define DI8DEVTYPEMOUSE_FINGERSTICK 3 253 #define DI8DEVTYPEMOUSE_TOUCHPAD 4 254 #define DI8DEVTYPEMOUSE_TRACKBALL 5 255 #define DI8DEVTYPEMOUSE_ABSOLUTE 6 256 257 #define DI8DEVTYPEKEYBOARD_UNKNOWN 0 258 #define DI8DEVTYPEKEYBOARD_PCXT 1 259 #define DI8DEVTYPEKEYBOARD_OLIVETTI 2 260 #define DI8DEVTYPEKEYBOARD_PCAT 3 261 #define DI8DEVTYPEKEYBOARD_PCENH 4 262 #define DI8DEVTYPEKEYBOARD_NOKIA1050 5 263 #define DI8DEVTYPEKEYBOARD_NOKIA9140 6 264 #define DI8DEVTYPEKEYBOARD_NEC98 7 265 #define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 266 #define DI8DEVTYPEKEYBOARD_NEC98106 9 267 #define DI8DEVTYPEKEYBOARD_JAPAN106 10 268 #define DI8DEVTYPEKEYBOARD_JAPANAX 11 269 #define DI8DEVTYPEKEYBOARD_J3100 12 270 271 #define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 272 273 #define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 274 #define DI8DEVTYPEJOYSTICK_STANDARD 2 275 276 #define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 277 #define DI8DEVTYPEGAMEPAD_STANDARD 2 278 #define DI8DEVTYPEGAMEPAD_TILT 3 279 280 #define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 281 #define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 282 #define DI8DEVTYPEDRIVING_DUALPEDALS 3 283 #define DI8DEVTYPEDRIVING_THREEPEDALS 4 284 #define DI8DEVTYPEDRIVING_HANDHELD 5 285 286 #define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 287 #define DI8DEVTYPEFLIGHT_STICK 2 288 #define DI8DEVTYPEFLIGHT_YOKE 3 289 #define DI8DEVTYPEFLIGHT_RC 4 290 291 #define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 292 #define DI8DEVTYPE1STPERSON_UNKNOWN 2 293 #define DI8DEVTYPE1STPERSON_SIXDOF 3 294 #define DI8DEVTYPE1STPERSON_SHOOTER 4 295 296 #define DI8DEVTYPESCREENPTR_UNKNOWN 2 297 #define DI8DEVTYPESCREENPTR_LIGHTGUN 3 298 #define DI8DEVTYPESCREENPTR_LIGHTPEN 4 299 #define DI8DEVTYPESCREENPTR_TOUCH 5 300 301 #define DI8DEVTYPEREMOTE_UNKNOWN 2 302 303 #define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 304 #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 305 #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 306 307 #define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 308 #define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 309 #define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 310 #define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 311 #define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 312 #define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 313 #define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 314 #define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 315 #define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 316 #define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 317 #define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 318 #define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 319 320 #define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) 321 #define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) 322 323 typedef struct DIDEVICEOBJECTINSTANCE_DX3A { 324 DWORD dwSize; 325 GUID guidType; 326 DWORD dwOfs; 327 DWORD dwType; 328 DWORD dwFlags; 329 CHAR tszName[MAX_PATH]; 330 } DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; 331 typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; 332 typedef struct DIDEVICEOBJECTINSTANCE_DX3W { 333 DWORD dwSize; 334 GUID guidType; 335 DWORD dwOfs; 336 DWORD dwType; 337 DWORD dwFlags; 338 WCHAR tszName[MAX_PATH]; 339 } DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; 340 typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; 341 342 DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3) 343 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3) 344 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3) 345 346 typedef struct DIDEVICEOBJECTINSTANCEA { 347 DWORD dwSize; 348 GUID guidType; 349 DWORD dwOfs; 350 DWORD dwType; 351 DWORD dwFlags; 352 CHAR tszName[MAX_PATH]; 353 DWORD dwFFMaxForce; 354 DWORD dwFFForceResolution; 355 WORD wCollectionNumber; 356 WORD wDesignatorIndex; 357 WORD wUsagePage; 358 WORD wUsage; 359 DWORD dwDimension; 360 WORD wExponent; 361 WORD wReserved; 362 } DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; 363 typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; 364 365 typedef struct DIDEVICEOBJECTINSTANCEW { 366 DWORD dwSize; 367 GUID guidType; 368 DWORD dwOfs; 369 DWORD dwType; 370 DWORD dwFlags; 371 WCHAR tszName[MAX_PATH]; 372 DWORD dwFFMaxForce; 373 DWORD dwFFForceResolution; 374 WORD wCollectionNumber; 375 WORD wDesignatorIndex; 376 WORD wUsagePage; 377 WORD wUsage; 378 DWORD dwDimension; 379 WORD wExponent; 380 WORD wReserved; 381 } DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; 382 typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; 383 384 DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE) 385 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE) 386 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE) 387 388 typedef struct DIDEVICEINSTANCE_DX3A { 389 DWORD dwSize; 390 GUID guidInstance; 391 GUID guidProduct; 392 DWORD dwDevType; 393 CHAR tszInstanceName[MAX_PATH]; 394 CHAR tszProductName[MAX_PATH]; 395 } DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; 396 typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; 397 typedef struct DIDEVICEINSTANCE_DX3W { 398 DWORD dwSize; 399 GUID guidInstance; 400 GUID guidProduct; 401 DWORD dwDevType; 402 WCHAR tszInstanceName[MAX_PATH]; 403 WCHAR tszProductName[MAX_PATH]; 404 } DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; 405 typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; 406 407 DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3) 408 DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3) 409 DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3) 410 411 typedef struct DIDEVICEINSTANCEA { 412 DWORD dwSize; 413 GUID guidInstance; 414 GUID guidProduct; 415 DWORD dwDevType; 416 CHAR tszInstanceName[MAX_PATH]; 417 CHAR tszProductName[MAX_PATH]; 418 GUID guidFFDriver; 419 WORD wUsagePage; 420 WORD wUsage; 421 } DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; 422 typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; 423 424 typedef struct DIDEVICEINSTANCEW { 425 DWORD dwSize; 426 GUID guidInstance; 427 GUID guidProduct; 428 DWORD dwDevType; 429 WCHAR tszInstanceName[MAX_PATH]; 430 WCHAR tszProductName[MAX_PATH]; 431 GUID guidFFDriver; 432 WORD wUsagePage; 433 WORD wUsage; 434 } DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; 435 typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; 436 437 DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE) 438 DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE) 439 DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE) 440 441 typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID); 442 typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID); 443 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK) 444 445 #define DIEDBS_MAPPEDPRI1 0x00000001 446 #define DIEDBS_MAPPEDPRI2 0x00000002 447 #define DIEDBS_RECENTDEVICE 0x00000010 448 #define DIEDBS_NEWDEVICE 0x00000020 449 450 #define DIEDBSFL_ATTACHEDONLY 0x00000000 451 #define DIEDBSFL_THISUSER 0x00000010 452 #define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK 453 #define DIEDBSFL_AVAILABLEDEVICES 0x00001000 454 #define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 455 #define DIEDBSFL_NONGAMINGDEVICES 0x00004000 456 #define DIEDBSFL_VALID 0x00007110 457 458 typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID); 459 typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID); 460 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB) 461 462 typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID); 463 464 typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID); 465 typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID); 466 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) 467 468 typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); 469 470 #define DIK_ESCAPE 0x01 471 #define DIK_1 0x02 472 #define DIK_2 0x03 473 #define DIK_3 0x04 474 #define DIK_4 0x05 475 #define DIK_5 0x06 476 #define DIK_6 0x07 477 #define DIK_7 0x08 478 #define DIK_8 0x09 479 #define DIK_9 0x0A 480 #define DIK_0 0x0B 481 #define DIK_MINUS 0x0C /* - on main keyboard */ 482 #define DIK_EQUALS 0x0D 483 #define DIK_BACK 0x0E /* backspace */ 484 #define DIK_TAB 0x0F 485 #define DIK_Q 0x10 486 #define DIK_W 0x11 487 #define DIK_E 0x12 488 #define DIK_R 0x13 489 #define DIK_T 0x14 490 #define DIK_Y 0x15 491 #define DIK_U 0x16 492 #define DIK_I 0x17 493 #define DIK_O 0x18 494 #define DIK_P 0x19 495 #define DIK_LBRACKET 0x1A 496 #define DIK_RBRACKET 0x1B 497 #define DIK_RETURN 0x1C /* Enter on main keyboard */ 498 #define DIK_LCONTROL 0x1D 499 #define DIK_A 0x1E 500 #define DIK_S 0x1F 501 #define DIK_D 0x20 502 #define DIK_F 0x21 503 #define DIK_G 0x22 504 #define DIK_H 0x23 505 #define DIK_J 0x24 506 #define DIK_K 0x25 507 #define DIK_L 0x26 508 #define DIK_SEMICOLON 0x27 509 #define DIK_APOSTROPHE 0x28 510 #define DIK_GRAVE 0x29 /* accent grave */ 511 #define DIK_LSHIFT 0x2A 512 #define DIK_BACKSLASH 0x2B 513 #define DIK_Z 0x2C 514 #define DIK_X 0x2D 515 #define DIK_C 0x2E 516 #define DIK_V 0x2F 517 #define DIK_B 0x30 518 #define DIK_N 0x31 519 #define DIK_M 0x32 520 #define DIK_COMMA 0x33 521 #define DIK_PERIOD 0x34 /* . on main keyboard */ 522 #define DIK_SLASH 0x35 /* / on main keyboard */ 523 #define DIK_RSHIFT 0x36 524 #define DIK_MULTIPLY 0x37 /* * on numeric keypad */ 525 #define DIK_LMENU 0x38 /* left Alt */ 526 #define DIK_SPACE 0x39 527 #define DIK_CAPITAL 0x3A 528 #define DIK_F1 0x3B 529 #define DIK_F2 0x3C 530 #define DIK_F3 0x3D 531 #define DIK_F4 0x3E 532 #define DIK_F5 0x3F 533 #define DIK_F6 0x40 534 #define DIK_F7 0x41 535 #define DIK_F8 0x42 536 #define DIK_F9 0x43 537 #define DIK_F10 0x44 538 #define DIK_NUMLOCK 0x45 539 #define DIK_SCROLL 0x46 /* Scroll Lock */ 540 #define DIK_NUMPAD7 0x47 541 #define DIK_NUMPAD8 0x48 542 #define DIK_NUMPAD9 0x49 543 #define DIK_SUBTRACT 0x4A /* - on numeric keypad */ 544 #define DIK_NUMPAD4 0x4B 545 #define DIK_NUMPAD5 0x4C 546 #define DIK_NUMPAD6 0x4D 547 #define DIK_ADD 0x4E /* + on numeric keypad */ 548 #define DIK_NUMPAD1 0x4F 549 #define DIK_NUMPAD2 0x50 550 #define DIK_NUMPAD3 0x51 551 #define DIK_NUMPAD0 0x52 552 #define DIK_DECIMAL 0x53 /* . on numeric keypad */ 553 #define DIK_F11 0x57 554 #define DIK_F12 0x58 555 #define DIK_F13 0x64 /* (NEC PC98) */ 556 #define DIK_F14 0x65 /* (NEC PC98) */ 557 #define DIK_F15 0x66 /* (NEC PC98) */ 558 #define DIK_KANA 0x70 /* (Japanese keyboard) */ 559 #define DIK_CONVERT 0x79 /* (Japanese keyboard) */ 560 #define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ 561 #define DIK_YEN 0x7D /* (Japanese keyboard) */ 562 #define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ 563 #define DIK_CIRCUMFLEX 0x90 /* (Japanese keyboard) */ 564 #define DIK_AT 0x91 /* (NEC PC98) */ 565 #define DIK_COLON 0x92 /* (NEC PC98) */ 566 #define DIK_UNDERLINE 0x93 /* (NEC PC98) */ 567 #define DIK_KANJI 0x94 /* (Japanese keyboard) */ 568 #define DIK_STOP 0x95 /* (NEC PC98) */ 569 #define DIK_AX 0x96 /* (Japan AX) */ 570 #define DIK_UNLABELED 0x97 /* (J3100) */ 571 #define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ 572 #define DIK_RCONTROL 0x9D 573 #define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ 574 #define DIK_DIVIDE 0xB5 /* / on numeric keypad */ 575 #define DIK_SYSRQ 0xB7 576 #define DIK_RMENU 0xB8 /* right Alt */ 577 #define DIK_PAUSE 0xC5 /* Pause */ 578 #define DIK_HOME 0xC7 /* Home on arrow keypad */ 579 #define DIK_UP 0xC8 /* UpArrow on arrow keypad */ 580 #define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ 581 #define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ 582 #define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ 583 #define DIK_END 0xCF /* End on arrow keypad */ 584 #define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ 585 #define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ 586 #define DIK_INSERT 0xD2 /* Insert on arrow keypad */ 587 #define DIK_DELETE 0xD3 /* Delete on arrow keypad */ 588 #define DIK_LWIN 0xDB /* Left Windows key */ 589 #define DIK_RWIN 0xDC /* Right Windows key */ 590 #define DIK_APPS 0xDD /* AppMenu key */ 591 #define DIK_POWER 0xDE 592 #define DIK_SLEEP 0xDF 593 #define DIK_BACKSPACE DIK_BACK /* backspace */ 594 #define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ 595 #define DIK_LALT DIK_LMENU /* left Alt */ 596 #define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ 597 #define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ 598 #define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ 599 #define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ 600 #define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ 601 #define DIK_RALT DIK_RMENU /* right Alt */ 602 #define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ 603 #define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ 604 #define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ 605 #define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ 606 #define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ 607 #define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ 608 609 /* New DirectInput8 style keyboard constants */ 610 611 #define DIKEYBOARD_ESCAPE (DIK_ESCAPE | 0x81000400) 612 #define DIKEYBOARD_1 (DIK_1 | 0x81000400) 613 #define DIKEYBOARD_2 (DIK_2 | 0x81000400) 614 #define DIKEYBOARD_3 (DIK_3 | 0x81000400) 615 #define DIKEYBOARD_4 (DIK_4 | 0x81000400) 616 #define DIKEYBOARD_5 (DIK_5 | 0x81000400) 617 #define DIKEYBOARD_6 (DIK_6 | 0x81000400) 618 #define DIKEYBOARD_7 (DIK_7 | 0x81000400) 619 #define DIKEYBOARD_8 (DIK_8 | 0x81000400) 620 #define DIKEYBOARD_9 (DIK_9 | 0x81000400) 621 #define DIKEYBOARD_0 (DIK_0 | 0x81000400) 622 #define DIKEYBOARD_MINUS (DIK_MINUS | 0x81000400) 623 #define DIKEYBOARD_EQUALS (DIK_EQUALS | 0x81000400) 624 #define DIKEYBOARD_BACK (DIK_BACK | 0x81000400) 625 #define DIKEYBOARD_TAB (DIK_TAB | 0x81000400) 626 #define DIKEYBOARD_Q (DIK_Q | 0x81000400) 627 #define DIKEYBOARD_W (DIK_W | 0x81000400) 628 #define DIKEYBOARD_E (DIK_E | 0x81000400) 629 #define DIKEYBOARD_R (DIK_R | 0x81000400) 630 #define DIKEYBOARD_T (DIK_T | 0x81000400) 631 #define DIKEYBOARD_Y (DIK_Y | 0x81000400) 632 #define DIKEYBOARD_U (DIK_U | 0x81000400) 633 #define DIKEYBOARD_I (DIK_I | 0x81000400) 634 #define DIKEYBOARD_O (DIK_O | 0x81000400) 635 #define DIKEYBOARD_P (DIK_P | 0x81000400) 636 #define DIKEYBOARD_LBRACKET (DIK_LBRACKET | 0x81000400) 637 #define DIKEYBOARD_RBRACKET (DIK_RBRACKET | 0x81000400) 638 #define DIKEYBOARD_RETURN (DIK_RETURN | 0x81000400) 639 #define DIKEYBOARD_LCONTROL (DIK_LCONTROL | 0x81000400) 640 #define DIKEYBOARD_A (DIK_A | 0x81000400) 641 #define DIKEYBOARD_S (DIK_S | 0x81000400) 642 #define DIKEYBOARD_D (DIK_D | 0x81000400) 643 #define DIKEYBOARD_F (DIK_F | 0x81000400) 644 #define DIKEYBOARD_G (DIK_G | 0x81000400) 645 #define DIKEYBOARD_H (DIK_H | 0x81000400) 646 #define DIKEYBOARD_J (DIK_J | 0x81000400) 647 #define DIKEYBOARD_K (DIK_K | 0x81000400) 648 #define DIKEYBOARD_L (DIK_L | 0x81000400) 649 #define DIKEYBOARD_SEMICOLON (DIK_SEMICOLON | 0x81000400) 650 #define DIKEYBOARD_APOSTROPHE (DIK_APOSTROPHE | 0x81000400) 651 #define DIKEYBOARD_GRAVE (DIK_GRAVE | 0x81000400) 652 #define DIKEYBOARD_LSHIFT (DIK_LSHIFT | 0x81000400) 653 #define DIKEYBOARD_BACKSLASH (DIK_BACKSLASH | 0x81000400) 654 #define DIKEYBOARD_Z (DIK_Z | 0x81000400) 655 #define DIKEYBOARD_X (DIK_X | 0x81000400) 656 #define DIKEYBOARD_C (DIK_C | 0x81000400) 657 #define DIKEYBOARD_V (DIK_V | 0x81000400) 658 #define DIKEYBOARD_B (DIK_B | 0x81000400) 659 #define DIKEYBOARD_N (DIK_N | 0x81000400) 660 #define DIKEYBOARD_M (DIK_M | 0x81000400) 661 #define DIKEYBOARD_COMMA (DIK_COMMA | 0x81000400) 662 #define DIKEYBOARD_PERIOD (DIK_PERIOD | 0x81000400) 663 #define DIKEYBOARD_SLASH (DIK_SLASH | 0x81000400) 664 #define DIKEYBOARD_RSHIFT (DIK_RSHIFT | 0x81000400) 665 #define DIKEYBOARD_MULTIPLY (DIK_MULTIPLY | 0x81000400) 666 #define DIKEYBOARD_LMENU (DIK_LMENU | 0x81000400) 667 #define DIKEYBOARD_SPACE (DIK_SPACE | 0x81000400) 668 #define DIKEYBOARD_CAPITAL (DIK_CAPITAL | 0x81000400) 669 #define DIKEYBOARD_F1 (DIK_F1 | 0x81000400) 670 #define DIKEYBOARD_F2 (DIK_F2 | 0x81000400) 671 #define DIKEYBOARD_F3 (DIK_F3 | 0x81000400) 672 #define DIKEYBOARD_F4 (DIK_F4 | 0x81000400) 673 #define DIKEYBOARD_F5 (DIK_F5 | 0x81000400) 674 #define DIKEYBOARD_F6 (DIK_F6 | 0x81000400) 675 #define DIKEYBOARD_F7 (DIK_F7 | 0x81000400) 676 #define DIKEYBOARD_F8 (DIK_F8 | 0x81000400) 677 #define DIKEYBOARD_F9 (DIK_F9 | 0x81000400) 678 #define DIKEYBOARD_F10 (DIK_F10 | 0x81000400) 679 #define DIKEYBOARD_NUMLOCK (DIK_NUMLOCK | 0x81000400) 680 #define DIKEYBOARD_SCROLL (DIK_SCROLL | 0x81000400) 681 #define DIKEYBOARD_NUMPAD7 (DIK_NUMPAD7 | 0x81000400) 682 #define DIKEYBOARD_NUMPAD8 (DIK_NUMPAD8 | 0x81000400) 683 #define DIKEYBOARD_NUMPAD9 (DIK_NUMPAD9 | 0x81000400) 684 #define DIKEYBOARD_SUBTRACT (DIK_SUBTRACT | 0x81000400) 685 #define DIKEYBOARD_NUMPAD4 (DIK_NUMPAD4 | 0x81000400) 686 #define DIKEYBOARD_NUMPAD5 (DIK_NUMPAD5 | 0x81000400) 687 #define DIKEYBOARD_NUMPAD6 (DIK_NUMPAD6 | 0x81000400) 688 #define DIKEYBOARD_ADD (DIK_ADD | 0x81000400) 689 #define DIKEYBOARD_NUMPAD1 (DIK_NUMPAD1 | 0x81000400) 690 #define DIKEYBOARD_NUMPAD2 (DIK_NUMPAD2 | 0x81000400) 691 #define DIKEYBOARD_NUMPAD3 (DIK_NUMPAD3 | 0x81000400) 692 #define DIKEYBOARD_NUMPAD0 (DIK_NUMPAD0 | 0x81000400) 693 #define DIKEYBOARD_DECIMAL (DIK_DECIMAL | 0x81000400) 694 #define DIKEYBOARD_F11 (DIK_F11 | 0x81000400) 695 #define DIKEYBOARD_F12 (DIK_F12 | 0x81000400) 696 #define DIKEYBOARD_F13 (DIK_F13 | 0x81000400) 697 #define DIKEYBOARD_F14 (DIK_F14 | 0x81000400) 698 #define DIKEYBOARD_F15 (DIK_F15 | 0x81000400) 699 #define DIKEYBOARD_KANA (DIK_KANA | 0x81000400) 700 #define DIKEYBOARD_CONVERT (DIK_CONVERT | 0x81000400) 701 #define DIKEYBOARD_NOCONVERT (DIK_NOCONVERT | 0x81000400) 702 #define DIKEYBOARD_YEN (DIK_YEN | 0x81000400) 703 #define DIKEYBOARD_NUMPADEQUALS (DIK_NUMPADEQUALS | 0x81000400) 704 #define DIKEYBOARD_CIRCUMFLEX (DIK_CIRCUMFLEX | 0x81000400) 705 #define DIKEYBOARD_AT (DIK_AT | 0x81000400) 706 #define DIKEYBOARD_COLON (DIK_COLON | 0x81000400) 707 #define DIKEYBOARD_UNDERLINE (DIK_UNDERLINE | 0x81000400) 708 #define DIKEYBOARD_KANJI (DIK_KANJI | 0x81000400) 709 #define DIKEYBOARD_STOP (DIK_STOP | 0x81000400) 710 #define DIKEYBOARD_AX (DIK_AX | 0x81000400) 711 #define DIKEYBOARD_UNLABELED (DIK_UNLABELED | 0x81000400) 712 #define DIKEYBOARD_NUMPADENTER (DIK_NUMPADENTER | 0x81000400) 713 #define DIKEYBOARD_RCONTROL (DIK_RCONTROL | 0x81000400) 714 #define DIKEYBOARD_NUMPADCOMMA (DIK_NUMPADCOMMA | 0x81000400) 715 #define DIKEYBOARD_DIVIDE (DIK_DIVIDE | 0x81000400) 716 #define DIKEYBOARD_SYSRQ (DIK_SYSRQ | 0x81000400) 717 #define DIKEYBOARD_RMENU (DIK_RMENU | 0x81000400) 718 #define DIKEYBOARD_PAUSE (DIK_PAUSE | 0x81000400) 719 #define DIKEYBOARD_HOME (DIK_HOME | 0x81000400) 720 #define DIKEYBOARD_UP (DIK_UP | 0x81000400) 721 #define DIKEYBOARD_PRIOR (DIK_PRIOR | 0x81000400) 722 #define DIKEYBOARD_LEFT (DIK_LEFT | 0x81000400) 723 #define DIKEYBOARD_RIGHT (DIK_RIGHT | 0x81000400) 724 #define DIKEYBOARD_END (DIK_END | 0x81000400) 725 #define DIKEYBOARD_DOWN (DIK_DOWN | 0x81000400) 726 #define DIKEYBOARD_NEXT (DIK_NEXT | 0x81000400) 727 #define DIKEYBOARD_INSERT (DIK_INSERT | 0x81000400) 728 #define DIKEYBOARD_DELETE (DIK_DELETE | 0x81000400) 729 #define DIKEYBOARD_LWIN (DIK_LWIN | 0x81000400) 730 #define DIKEYBOARD_RWIN (DIK_RWIN | 0x81000400) 731 #define DIKEYBOARD_APPS (DIK_APPS | 0x81000400) 732 #define DIKEYBOARD_POWER (DIK_POWER | 0x81000400) 733 #define DIKEYBOARD_SLEEP (DIK_SLEEP | 0x81000400) 734 #define DIKEYBOARD_BACKSPACE (DIK_BACKSPACE | 0x81000400) 735 #define DIKEYBOARD_NUMPADSTAR (DIK_NUMPADSTAR | 0x81000400) 736 #define DIKEYBOARD_LALT (DIK_LALT | 0x81000400) 737 #define DIKEYBOARD_CAPSLOCK (DIK_CAPSLOCK | 0x81000400) 738 #define DIKEYBOARD_NUMPADMINUS (DIK_NUMPADMINUS | 0x81000400) 739 #define DIKEYBOARD_NUMPADPLUS (DIK_NUMPADPLUS | 0x81000400) 740 #define DIKEYBOARD_NUMPADPERIOD (DIK_NUMPADPERIOD | 0x81000400) 741 #define DIKEYBOARD_NUMPADSLASH (DIK_NUMPADSLASH | 0x81000400) 742 #define DIKEYBOARD_RALT (DIK_RALT | 0x81000400) 743 #define DIKEYBOARD_UPARROW (DIK_UPARROW | 0x81000400) 744 #define DIKEYBOARD_PGUP (DIK_PGUP | 0x81000400) 745 #define DIKEYBOARD_LEFTARROW (DIK_LEFTARROW | 0x81000400) 746 #define DIKEYBOARD_RIGHTARROW (DIK_RIGHTARROW | 0x81000400) 747 #define DIKEYBOARD_DOWNARROW (DIK_DOWNARROW | 0x81000400) 748 #define DIKEYBOARD_PGDN (DIK_PGDN | 0x81000400) 749 750 #define DIDFT_ALL 0x00000000 751 #define DIDFT_RELAXIS 0x00000001 752 #define DIDFT_ABSAXIS 0x00000002 753 #define DIDFT_AXIS 0x00000003 754 #define DIDFT_PSHBUTTON 0x00000004 755 #define DIDFT_TGLBUTTON 0x00000008 756 #define DIDFT_BUTTON 0x0000000C 757 #define DIDFT_POV 0x00000010 758 #define DIDFT_COLLECTION 0x00000040 759 #define DIDFT_NODATA 0x00000080 760 #define DIDFT_ANYINSTANCE 0x00FFFF00 761 #define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE 762 #define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) 763 #define DIDFT_GETTYPE(n) LOBYTE(n) 764 #define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) 765 #define DIDFT_FFACTUATOR 0x01000000 766 #define DIDFT_FFEFFECTTRIGGER 0x02000000 767 #define DIDFT_OUTPUT 0x10000000 768 #define DIDFT_VENDORDEFINED 0x04000000 769 #define DIDFT_ALIAS 0x08000000 770 #ifndef DIDFT_OPTIONAL 771 #define DIDFT_OPTIONAL 0x80000000 772 #endif 773 #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) 774 #define DIDFT_NOCOLLECTION 0x00FFFF00 775 #define DIDF_ABSAXIS 0x00000001 776 #define DIDF_RELAXIS 0x00000002 777 778 #define DIGDD_PEEK 0x00000001 779 780 #define DISEQUENCE_COMPARE(dwSq1,cmp,dwSq2) ((int)((dwSq1) - (dwSq2)) cmp 0) 781 782 typedef struct DIDEVICEOBJECTDATA_DX3 { 783 DWORD dwOfs; 784 DWORD dwData; 785 DWORD dwTimeStamp; 786 DWORD dwSequence; 787 } DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3; 788 typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3; 789 790 typedef struct DIDEVICEOBJECTDATA { 791 DWORD dwOfs; 792 DWORD dwData; 793 DWORD dwTimeStamp; 794 DWORD dwSequence; 795 UINT_PTR uAppData; 796 } DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; 797 typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; 798 799 typedef struct _DIOBJECTDATAFORMAT { 800 const GUID *pguid; 801 DWORD dwOfs; 802 DWORD dwType; 803 DWORD dwFlags; 804 } DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; 805 typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; 806 807 typedef struct _DIDATAFORMAT { 808 DWORD dwSize; 809 DWORD dwObjSize; 810 DWORD dwFlags; 811 DWORD dwDataSize; 812 DWORD dwNumObjs; 813 LPDIOBJECTDATAFORMAT rgodf; 814 } DIDATAFORMAT, *LPDIDATAFORMAT; 815 typedef const DIDATAFORMAT *LPCDIDATAFORMAT; 816 817 #define DIDOI_FFACTUATOR 0x00000001 818 #define DIDOI_FFEFFECTTRIGGER 0x00000002 819 #define DIDOI_POLLED 0x00008000 820 #define DIDOI_ASPECTPOSITION 0x00000100 821 #define DIDOI_ASPECTVELOCITY 0x00000200 822 #define DIDOI_ASPECTACCEL 0x00000300 823 #define DIDOI_ASPECTFORCE 0x00000400 824 #define DIDOI_ASPECTMASK 0x00000F00 825 #define DIDOI_GUIDISUSAGE 0x00010000 826 827 typedef struct DIPROPHEADER { 828 DWORD dwSize; 829 DWORD dwHeaderSize; 830 DWORD dwObj; 831 DWORD dwHow; 832 } DIPROPHEADER,*LPDIPROPHEADER; 833 typedef const DIPROPHEADER *LPCDIPROPHEADER; 834 835 #define DIPH_DEVICE 0 836 #define DIPH_BYOFFSET 1 837 #define DIPH_BYID 2 838 #define DIPH_BYUSAGE 3 839 840 #define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage) 841 842 typedef struct DIPROPDWORD { 843 DIPROPHEADER diph; 844 DWORD dwData; 845 } DIPROPDWORD, *LPDIPROPDWORD; 846 typedef const DIPROPDWORD *LPCDIPROPDWORD; 847 848 typedef struct DIPROPRANGE { 849 DIPROPHEADER diph; 850 LONG lMin; 851 LONG lMax; 852 } DIPROPRANGE, *LPDIPROPRANGE; 853 typedef const DIPROPRANGE *LPCDIPROPRANGE; 854 855 #define DIPROPRANGE_NOMIN ((LONG)0x80000000) 856 #define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) 857 858 typedef struct DIPROPCAL { 859 DIPROPHEADER diph; 860 LONG lMin; 861 LONG lCenter; 862 LONG lMax; 863 } DIPROPCAL, *LPDIPROPCAL; 864 typedef const DIPROPCAL *LPCDIPROPCAL; 865 866 typedef struct DIPROPGUIDANDPATH { 867 DIPROPHEADER diph; 868 GUID guidClass; 869 WCHAR wszPath[MAX_PATH]; 870 } DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; 871 typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; 872 873 typedef struct DIPROPSTRING { 874 DIPROPHEADER diph; 875 WCHAR wsz[MAX_PATH]; 876 } DIPROPSTRING, *LPDIPROPSTRING; 877 typedef const DIPROPSTRING *LPCDIPROPSTRING; 878 879 /* special property GUIDs */ 880 #ifdef __cplusplus 881 #define MAKEDIPROP(prop) (*(const GUID *)(prop)) 882 #else 883 #define MAKEDIPROP(prop) ((REFGUID)(prop)) 884 #endif 885 #define DIPROP_BUFFERSIZE MAKEDIPROP(1) 886 #define DIPROP_AXISMODE MAKEDIPROP(2) 887 888 #define DIPROPAXISMODE_ABS 0 889 #define DIPROPAXISMODE_REL 1 890 891 #define DIPROP_GRANULARITY MAKEDIPROP(3) 892 #define DIPROP_RANGE MAKEDIPROP(4) 893 #define DIPROP_DEADZONE MAKEDIPROP(5) 894 #define DIPROP_SATURATION MAKEDIPROP(6) 895 #define DIPROP_FFGAIN MAKEDIPROP(7) 896 #define DIPROP_FFLOAD MAKEDIPROP(8) 897 #define DIPROP_AUTOCENTER MAKEDIPROP(9) 898 899 #define DIPROPAUTOCENTER_OFF 0 900 #define DIPROPAUTOCENTER_ON 1 901 902 #define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) 903 904 #define DIPROPCALIBRATIONMODE_COOKED 0 905 #define DIPROPCALIBRATIONMODE_RAW 1 906 907 #define DIPROP_CALIBRATION MAKEDIPROP(11) 908 #define DIPROP_GUIDANDPATH MAKEDIPROP(12) 909 910 #define DIPROP_INSTANCENAME MAKEDIPROP(13) 911 #define DIPROP_PRODUCTNAME MAKEDIPROP(14) 912 #define DIPROP_JOYSTICKID MAKEDIPROP(15) 913 914 #define DIPROP_KEYNAME MAKEDIPROP(20) 915 #define DIPROP_CPOINTS MAKEDIPROP(21) 916 #define DIPROP_APPDATA MAKEDIPROP(22) 917 #define DIPROP_SCANCODE MAKEDIPROP(23) 918 #define DIPROP_VIDPID MAKEDIPROP(24) 919 #define DIPROP_USERNAME MAKEDIPROP(25) 920 #define DIPROP_TYPENAME MAKEDIPROP(26) 921 922 typedef struct DIDEVCAPS_DX3 { 923 DWORD dwSize; 924 DWORD dwFlags; 925 DWORD dwDevType; 926 DWORD dwAxes; 927 DWORD dwButtons; 928 DWORD dwPOVs; 929 } DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; 930 931 typedef struct DIDEVCAPS { 932 DWORD dwSize; 933 DWORD dwFlags; 934 DWORD dwDevType; 935 DWORD dwAxes; 936 DWORD dwButtons; 937 DWORD dwPOVs; 938 DWORD dwFFSamplePeriod; 939 DWORD dwFFMinTimeResolution; 940 DWORD dwFirmwareRevision; 941 DWORD dwHardwareRevision; 942 DWORD dwFFDriverVersion; 943 } DIDEVCAPS,*LPDIDEVCAPS; 944 945 #define DIDC_ATTACHED 0x00000001 946 #define DIDC_POLLEDDEVICE 0x00000002 947 #define DIDC_EMULATED 0x00000004 948 #define DIDC_POLLEDDATAFORMAT 0x00000008 949 #define DIDC_FORCEFEEDBACK 0x00000100 950 #define DIDC_FFATTACK 0x00000200 951 #define DIDC_FFFADE 0x00000400 952 #define DIDC_SATURATION 0x00000800 953 #define DIDC_POSNEGCOEFFICIENTS 0x00001000 954 #define DIDC_POSNEGSATURATION 0x00002000 955 #define DIDC_DEADBAND 0x00004000 956 #define DIDC_STARTDELAY 0x00008000 957 #define DIDC_ALIAS 0x00010000 958 #define DIDC_PHANTOM 0x00020000 959 #define DIDC_HIDDEN 0x00040000 960 961 962 /* SetCooperativeLevel dwFlags */ 963 #define DISCL_EXCLUSIVE 0x00000001 964 #define DISCL_NONEXCLUSIVE 0x00000002 965 #define DISCL_FOREGROUND 0x00000004 966 #define DISCL_BACKGROUND 0x00000008 967 #define DISCL_NOWINKEY 0x00000010 968 969 /* Device FF flags */ 970 #define DISFFC_RESET 0x00000001 971 #define DISFFC_STOPALL 0x00000002 972 #define DISFFC_PAUSE 0x00000004 973 #define DISFFC_CONTINUE 0x00000008 974 #define DISFFC_SETACTUATORSON 0x00000010 975 #define DISFFC_SETACTUATORSOFF 0x00000020 976 977 #define DIGFFS_EMPTY 0x00000001 978 #define DIGFFS_STOPPED 0x00000002 979 #define DIGFFS_PAUSED 0x00000004 980 #define DIGFFS_ACTUATORSON 0x00000010 981 #define DIGFFS_ACTUATORSOFF 0x00000020 982 #define DIGFFS_POWERON 0x00000040 983 #define DIGFFS_POWEROFF 0x00000080 984 #define DIGFFS_SAFETYSWITCHON 0x00000100 985 #define DIGFFS_SAFETYSWITCHOFF 0x00000200 986 #define DIGFFS_USERFFSWITCHON 0x00000400 987 #define DIGFFS_USERFFSWITCHOFF 0x00000800 988 #define DIGFFS_DEVICELOST 0x80000000 989 990 /* Effect flags */ 991 #define DIEFT_ALL 0x00000000 992 993 #define DIEFT_CONSTANTFORCE 0x00000001 994 #define DIEFT_RAMPFORCE 0x00000002 995 #define DIEFT_PERIODIC 0x00000003 996 #define DIEFT_CONDITION 0x00000004 997 #define DIEFT_CUSTOMFORCE 0x00000005 998 #define DIEFT_HARDWARE 0x000000FF 999 #define DIEFT_FFATTACK 0x00000200 1000 #define DIEFT_FFFADE 0x00000400 1001 #define DIEFT_SATURATION 0x00000800 1002 #define DIEFT_POSNEGCOEFFICIENTS 0x00001000 1003 #define DIEFT_POSNEGSATURATION 0x00002000 1004 #define DIEFT_DEADBAND 0x00004000 1005 #define DIEFT_STARTDELAY 0x00008000 1006 #define DIEFT_GETTYPE(n) LOBYTE(n) 1007 1008 #define DIEFF_OBJECTIDS 0x00000001 1009 #define DIEFF_OBJECTOFFSETS 0x00000002 1010 #define DIEFF_CARTESIAN 0x00000010 1011 #define DIEFF_POLAR 0x00000020 1012 #define DIEFF_SPHERICAL 0x00000040 1013 1014 #define DIEP_DURATION 0x00000001 1015 #define DIEP_SAMPLEPERIOD 0x00000002 1016 #define DIEP_GAIN 0x00000004 1017 #define DIEP_TRIGGERBUTTON 0x00000008 1018 #define DIEP_TRIGGERREPEATINTERVAL 0x00000010 1019 #define DIEP_AXES 0x00000020 1020 #define DIEP_DIRECTION 0x00000040 1021 #define DIEP_ENVELOPE 0x00000080 1022 #define DIEP_TYPESPECIFICPARAMS 0x00000100 1023 #define DIEP_STARTDELAY 0x00000200 1024 #define DIEP_ALLPARAMS_DX5 0x000001FF 1025 #define DIEP_ALLPARAMS 0x000003FF 1026 #define DIEP_START 0x20000000 1027 #define DIEP_NORESTART 0x40000000 1028 #define DIEP_NODOWNLOAD 0x80000000 1029 #define DIEB_NOTRIGGER 0xFFFFFFFF 1030 1031 #define DIES_SOLO 0x00000001 1032 #define DIES_NODOWNLOAD 0x80000000 1033 1034 #define DIEGES_PLAYING 0x00000001 1035 #define DIEGES_EMULATED 0x00000002 1036 1037 #define DI_DEGREES 100 1038 #define DI_FFNOMINALMAX 10000 1039 #define DI_SECONDS 1000000 1040 1041 typedef struct DICONSTANTFORCE { 1042 LONG lMagnitude; 1043 } DICONSTANTFORCE, *LPDICONSTANTFORCE; 1044 typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; 1045 1046 typedef struct DIRAMPFORCE { 1047 LONG lStart; 1048 LONG lEnd; 1049 } DIRAMPFORCE, *LPDIRAMPFORCE; 1050 typedef const DIRAMPFORCE *LPCDIRAMPFORCE; 1051 1052 typedef struct DIPERIODIC { 1053 DWORD dwMagnitude; 1054 LONG lOffset; 1055 DWORD dwPhase; 1056 DWORD dwPeriod; 1057 } DIPERIODIC, *LPDIPERIODIC; 1058 typedef const DIPERIODIC *LPCDIPERIODIC; 1059 1060 typedef struct DICONDITION { 1061 LONG lOffset; 1062 LONG lPositiveCoefficient; 1063 LONG lNegativeCoefficient; 1064 DWORD dwPositiveSaturation; 1065 DWORD dwNegativeSaturation; 1066 LONG lDeadBand; 1067 } DICONDITION, *LPDICONDITION; 1068 typedef const DICONDITION *LPCDICONDITION; 1069 1070 typedef struct DICUSTOMFORCE { 1071 DWORD cChannels; 1072 DWORD dwSamplePeriod; 1073 DWORD cSamples; 1074 LPLONG rglForceData; 1075 } DICUSTOMFORCE, *LPDICUSTOMFORCE; 1076 typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; 1077 1078 typedef struct DIENVELOPE { 1079 DWORD dwSize; 1080 DWORD dwAttackLevel; 1081 DWORD dwAttackTime; 1082 DWORD dwFadeLevel; 1083 DWORD dwFadeTime; 1084 } DIENVELOPE, *LPDIENVELOPE; 1085 typedef const DIENVELOPE *LPCDIENVELOPE; 1086 1087 typedef struct DIEFFECT_DX5 { 1088 DWORD dwSize; 1089 DWORD dwFlags; 1090 DWORD dwDuration; 1091 DWORD dwSamplePeriod; 1092 DWORD dwGain; 1093 DWORD dwTriggerButton; 1094 DWORD dwTriggerRepeatInterval; 1095 DWORD cAxes; 1096 LPDWORD rgdwAxes; 1097 LPLONG rglDirection; 1098 LPDIENVELOPE lpEnvelope; 1099 DWORD cbTypeSpecificParams; 1100 LPVOID lpvTypeSpecificParams; 1101 } DIEFFECT_DX5, *LPDIEFFECT_DX5; 1102 typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; 1103 1104 typedef struct DIEFFECT { 1105 DWORD dwSize; 1106 DWORD dwFlags; 1107 DWORD dwDuration; 1108 DWORD dwSamplePeriod; 1109 DWORD dwGain; 1110 DWORD dwTriggerButton; 1111 DWORD dwTriggerRepeatInterval; 1112 DWORD cAxes; 1113 LPDWORD rgdwAxes; 1114 LPLONG rglDirection; 1115 LPDIENVELOPE lpEnvelope; 1116 DWORD cbTypeSpecificParams; 1117 LPVOID lpvTypeSpecificParams; 1118 DWORD dwStartDelay; 1119 } DIEFFECT, *LPDIEFFECT; 1120 typedef const DIEFFECT *LPCDIEFFECT; 1121 typedef DIEFFECT DIEFFECT_DX6; 1122 typedef LPDIEFFECT LPDIEFFECT_DX6; 1123 1124 typedef struct DIEFFECTINFOA { 1125 DWORD dwSize; 1126 GUID guid; 1127 DWORD dwEffType; 1128 DWORD dwStaticParams; 1129 DWORD dwDynamicParams; 1130 CHAR tszName[MAX_PATH]; 1131 } DIEFFECTINFOA, *LPDIEFFECTINFOA; 1132 typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; 1133 1134 typedef struct DIEFFECTINFOW { 1135 DWORD dwSize; 1136 GUID guid; 1137 DWORD dwEffType; 1138 DWORD dwStaticParams; 1139 DWORD dwDynamicParams; 1140 WCHAR tszName[MAX_PATH]; 1141 } DIEFFECTINFOW, *LPDIEFFECTINFOW; 1142 typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; 1143 1144 DECL_WINELIB_TYPE_AW(DIEFFECTINFO) 1145 DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO) 1146 DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO) 1147 1148 typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); 1149 typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); 1150 1151 typedef struct DIEFFESCAPE { 1152 DWORD dwSize; 1153 DWORD dwCommand; 1154 LPVOID lpvInBuffer; 1155 DWORD cbInBuffer; 1156 LPVOID lpvOutBuffer; 1157 DWORD cbOutBuffer; 1158 } DIEFFESCAPE, *LPDIEFFESCAPE; 1159 1160 typedef struct DIJOYSTATE { 1161 LONG lX; 1162 LONG lY; 1163 LONG lZ; 1164 LONG lRx; 1165 LONG lRy; 1166 LONG lRz; 1167 LONG rglSlider[2]; 1168 DWORD rgdwPOV[4]; 1169 BYTE rgbButtons[32]; 1170 } DIJOYSTATE, *LPDIJOYSTATE; 1171 1172 typedef struct DIJOYSTATE2 { 1173 LONG lX; 1174 LONG lY; 1175 LONG lZ; 1176 LONG lRx; 1177 LONG lRy; 1178 LONG lRz; 1179 LONG rglSlider[2]; 1180 DWORD rgdwPOV[4]; 1181 BYTE rgbButtons[128]; 1182 LONG lVX; /* 'v' as in velocity */ 1183 LONG lVY; 1184 LONG lVZ; 1185 LONG lVRx; 1186 LONG lVRy; 1187 LONG lVRz; 1188 LONG rglVSlider[2]; 1189 LONG lAX; /* 'a' as in acceleration */ 1190 LONG lAY; 1191 LONG lAZ; 1192 LONG lARx; 1193 LONG lARy; 1194 LONG lARz; 1195 LONG rglASlider[2]; 1196 LONG lFX; /* 'f' as in force */ 1197 LONG lFY; 1198 LONG lFZ; 1199 LONG lFRx; /* 'fr' as in rotational force aka torque */ 1200 LONG lFRy; 1201 LONG lFRz; 1202 LONG rglFSlider[2]; 1203 } DIJOYSTATE2, *LPDIJOYSTATE2; 1204 1205 #define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) 1206 #define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) 1207 #define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) 1208 #define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) 1209 #define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) 1210 #define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) 1211 #define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ 1212 (n) * sizeof(LONG)) 1213 #define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ 1214 (n) * sizeof(DWORD)) 1215 #define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) 1216 #define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) 1217 #define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) 1218 #define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) 1219 #define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) 1220 #define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) 1221 #define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) 1222 #define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) 1223 #define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) 1224 #define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) 1225 #define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) 1226 #define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) 1227 #define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) 1228 #define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) 1229 #define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) 1230 #define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) 1231 #define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) 1232 #define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) 1233 #define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) 1234 #define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) 1235 #define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) 1236 #define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) 1237 #define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) 1238 #define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) 1239 #define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) 1240 #define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) 1241 #define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) 1242 #define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) 1243 #define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) 1244 #define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) 1245 #define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) 1246 #define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) 1247 #define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) 1248 1249 /* DInput 7 structures, types */ 1250 typedef struct DIFILEEFFECT { 1251 DWORD dwSize; 1252 GUID GuidEffect; 1253 LPCDIEFFECT lpDiEffect; 1254 CHAR szFriendlyName[MAX_PATH]; 1255 } DIFILEEFFECT, *LPDIFILEEFFECT; 1256 1257 typedef const DIFILEEFFECT *LPCDIFILEEFFECT; 1258 typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); 1259 1260 /* DInput 8 structures and types */ 1261 typedef struct _DIACTIONA { 1262 UINT_PTR uAppData; 1263 DWORD dwSemantic; 1264 DWORD dwFlags; 1265 union { 1266 LPCSTR lptszActionName; 1267 UINT uResIdString; 1268 } DUMMYUNIONNAME; 1269 GUID guidInstance; 1270 DWORD dwObjID; 1271 DWORD dwHow; 1272 } DIACTIONA, *LPDIACTIONA; 1273 typedef const DIACTIONA *LPCDIACTIONA; 1274 1275 typedef struct _DIACTIONW { 1276 UINT_PTR uAppData; 1277 DWORD dwSemantic; 1278 DWORD dwFlags; 1279 union { 1280 LPCWSTR lptszActionName; 1281 UINT uResIdString; 1282 } DUMMYUNIONNAME; 1283 GUID guidInstance; 1284 DWORD dwObjID; 1285 DWORD dwHow; 1286 } DIACTIONW, *LPDIACTIONW; 1287 typedef const DIACTIONW *LPCDIACTIONW; 1288 1289 DECL_WINELIB_TYPE_AW(DIACTION) 1290 DECL_WINELIB_TYPE_AW(LPDIACTION) 1291 DECL_WINELIB_TYPE_AW(LPCDIACTION) 1292 1293 #define DIA_FORCEFEEDBACK 0x00000001 1294 #define DIA_APPMAPPED 0x00000002 1295 #define DIA_APPNOMAP 0x00000004 1296 #define DIA_NORANGE 0x00000008 1297 #define DIA_APPFIXED 0x00000010 1298 1299 #define DIAH_UNMAPPED 0x00000000 1300 #define DIAH_USERCONFIG 0x00000001 1301 #define DIAH_APPREQUESTED 0x00000002 1302 #define DIAH_HWAPP 0x00000004 1303 #define DIAH_HWDEFAULT 0x00000008 1304 #define DIAH_DEFAULT 0x00000020 1305 #define DIAH_ERROR 0x80000000 1306 1307 typedef struct _DIACTIONFORMATA { 1308 DWORD dwSize; 1309 DWORD dwActionSize; 1310 DWORD dwDataSize; 1311 DWORD dwNumActions; 1312 LPDIACTIONA rgoAction; 1313 GUID guidActionMap; 1314 DWORD dwGenre; 1315 DWORD dwBufferSize; 1316 LONG lAxisMin; 1317 LONG lAxisMax; 1318 HINSTANCE hInstString; 1319 FILETIME ftTimeStamp; 1320 DWORD dwCRC; 1321 CHAR tszActionMap[MAX_PATH]; 1322 } DIACTIONFORMATA, *LPDIACTIONFORMATA; 1323 typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; 1324 1325 typedef struct _DIACTIONFORMATW { 1326 DWORD dwSize; 1327 DWORD dwActionSize; 1328 DWORD dwDataSize; 1329 DWORD dwNumActions; 1330 LPDIACTIONW rgoAction; 1331 GUID guidActionMap; 1332 DWORD dwGenre; 1333 DWORD dwBufferSize; 1334 LONG lAxisMin; 1335 LONG lAxisMax; 1336 HINSTANCE hInstString; 1337 FILETIME ftTimeStamp; 1338 DWORD dwCRC; 1339 WCHAR tszActionMap[MAX_PATH]; 1340 } DIACTIONFORMATW, *LPDIACTIONFORMATW; 1341 typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; 1342 1343 DECL_WINELIB_TYPE_AW(DIACTIONFORMAT) 1344 DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT) 1345 DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT) 1346 1347 #define DIAFTS_NEWDEVICELOW 0xFFFFFFFF 1348 #define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF 1349 #define DIAFTS_UNUSEDDEVICELOW 0x00000000 1350 #define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 1351 1352 #define DIDBAM_DEFAULT 0x00000000 1353 #define DIDBAM_PRESERVE 0x00000001 1354 #define DIDBAM_INITIALIZE 0x00000002 1355 #define DIDBAM_HWDEFAULTS 0x00000004 1356 1357 #define DIDSAM_DEFAULT 0x00000000 1358 #define DIDSAM_NOUSER 0x00000001 1359 #define DIDSAM_FORCESAVE 0x00000002 1360 1361 #define DICD_DEFAULT 0x00000000 1362 #define DICD_EDIT 0x00000001 1363 1364 #ifndef D3DCOLOR_DEFINED 1365 typedef DWORD D3DCOLOR; 1366 #define D3DCOLOR_DEFINED 1367 #endif 1368 1369 typedef struct _DICOLORSET { 1370 DWORD dwSize; 1371 D3DCOLOR cTextFore; 1372 D3DCOLOR cTextHighlight; 1373 D3DCOLOR cCalloutLine; 1374 D3DCOLOR cCalloutHighlight; 1375 D3DCOLOR cBorder; 1376 D3DCOLOR cControlFill; 1377 D3DCOLOR cHighlightFill; 1378 D3DCOLOR cAreaFill; 1379 } DICOLORSET, *LPDICOLORSET; 1380 typedef const DICOLORSET *LPCDICOLORSET; 1381 1382 typedef struct _DICONFIGUREDEVICESPARAMSA { 1383 DWORD dwSize; 1384 DWORD dwcUsers; 1385 LPSTR lptszUserNames; 1386 DWORD dwcFormats; 1387 LPDIACTIONFORMATA lprgFormats; 1388 HWND hwnd; 1389 DICOLORSET dics; 1390 LPUNKNOWN lpUnkDDSTarget; 1391 } DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; 1392 typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; 1393 1394 typedef struct _DICONFIGUREDEVICESPARAMSW { 1395 DWORD dwSize; 1396 DWORD dwcUsers; 1397 LPWSTR lptszUserNames; 1398 DWORD dwcFormats; 1399 LPDIACTIONFORMATW lprgFormats; 1400 HWND hwnd; 1401 DICOLORSET dics; 1402 LPUNKNOWN lpUnkDDSTarget; 1403 } DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; 1404 typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; 1405 1406 DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS) 1407 DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS) 1408 DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS) 1409 1410 #define DIDIFT_CONFIGURATION 0x00000001 1411 #define DIDIFT_OVERLAY 0x00000002 1412 1413 #define DIDAL_CENTERED 0x00000000 1414 #define DIDAL_LEFTALIGNED 0x00000001 1415 #define DIDAL_RIGHTALIGNED 0x00000002 1416 #define DIDAL_MIDDLE 0x00000000 1417 #define DIDAL_TOPALIGNED 0x00000004 1418 #define DIDAL_BOTTOMALIGNED 0x00000008 1419 1420 typedef struct _DIDEVICEIMAGEINFOA { 1421 CHAR tszImagePath[MAX_PATH]; 1422 DWORD dwFlags; 1423 DWORD dwViewID; 1424 RECT rcOverlay; 1425 DWORD dwObjID; 1426 DWORD dwcValidPts; 1427 POINT rgptCalloutLine[5]; 1428 RECT rcCalloutRect; 1429 DWORD dwTextAlign; 1430 } DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; 1431 typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; 1432 1433 typedef struct _DIDEVICEIMAGEINFOW { 1434 WCHAR tszImagePath[MAX_PATH]; 1435 DWORD dwFlags; 1436 DWORD dwViewID; 1437 RECT rcOverlay; 1438 DWORD dwObjID; 1439 DWORD dwcValidPts; 1440 POINT rgptCalloutLine[5]; 1441 RECT rcCalloutRect; 1442 DWORD dwTextAlign; 1443 } DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; 1444 typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; 1445 1446 DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO) 1447 DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO) 1448 DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO) 1449 1450 typedef struct _DIDEVICEIMAGEINFOHEADERA { 1451 DWORD dwSize; 1452 DWORD dwSizeImageInfo; 1453 DWORD dwcViews; 1454 DWORD dwcButtons; 1455 DWORD dwcAxes; 1456 DWORD dwcPOVs; 1457 DWORD dwBufferSize; 1458 DWORD dwBufferUsed; 1459 LPDIDEVICEIMAGEINFOA lprgImageInfoArray; 1460 } DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; 1461 typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; 1462 1463 typedef struct _DIDEVICEIMAGEINFOHEADERW { 1464 DWORD dwSize; 1465 DWORD dwSizeImageInfo; 1466 DWORD dwcViews; 1467 DWORD dwcButtons; 1468 DWORD dwcAxes; 1469 DWORD dwcPOVs; 1470 DWORD dwBufferSize; 1471 DWORD dwBufferUsed; 1472 LPDIDEVICEIMAGEINFOW lprgImageInfoArray; 1473 } DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; 1474 typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; 1475 1476 DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER) 1477 DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER) 1478 DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER) 1479 1480 1481 /***************************************************************************** 1482 * IDirectInputEffect interface 1483 */ 1484 #define INTERFACE IDirectInputEffect 1485 DECLARE_INTERFACE_(IDirectInputEffect,IUnknown) 1486 { 1487 /*** IUnknown methods ***/ 1488 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1489 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1490 STDMETHOD_(ULONG,Release)(THIS) PURE; 1491 /*** IDirectInputEffect methods ***/ 1492 STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE; 1493 STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; 1494 STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE; 1495 STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE; 1496 STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE; 1497 STDMETHOD(Stop)(THIS) PURE; 1498 STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; 1499 STDMETHOD(Download)(THIS) PURE; 1500 STDMETHOD(Unload)(THIS) PURE; 1501 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; 1502 }; 1503 #undef INTERFACE 1504 1505 #if !defined(__cplusplus) || defined(CINTERFACE) 1506 /*** IUnknown methods ***/ 1507 #define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1508 #define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) 1509 #define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) 1510 /*** IDirectInputEffect methods ***/ 1511 #define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1512 #define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) 1513 #define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) 1514 #define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) 1515 #define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) 1516 #define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) 1517 #define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) 1518 #define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) 1519 #define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) 1520 #define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1521 #else 1522 /*** IUnknown methods ***/ 1523 #define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1524 #define IDirectInputEffect_AddRef(p) (p)->AddRef() 1525 #define IDirectInputEffect_Release(p) (p)->Release() 1526 /*** IDirectInputEffect methods ***/ 1527 #define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1528 #define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) 1529 #define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) 1530 #define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) 1531 #define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) 1532 #define IDirectInputEffect_Stop(p) (p)->Stop() 1533 #define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) 1534 #define IDirectInputEffect_Download(p) (p)->Download() 1535 #define IDirectInputEffect_Unload(p) (p)->Unload() 1536 #define IDirectInputEffect_Escape(p,a) (p)->Escape(a) 1537 #endif 1538 1539 1540 /***************************************************************************** 1541 * IDirectInputDeviceA interface 1542 */ 1543 #define INTERFACE IDirectInputDeviceA 1544 DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown) 1545 { 1546 /*** IUnknown methods ***/ 1547 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1548 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1549 STDMETHOD_(ULONG,Release)(THIS) PURE; 1550 /*** IDirectInputDeviceA methods ***/ 1551 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1552 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1553 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1554 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1555 STDMETHOD(Acquire)(THIS) PURE; 1556 STDMETHOD(Unacquire)(THIS) PURE; 1557 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1558 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1559 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1560 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1561 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1562 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1563 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1564 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1565 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1566 }; 1567 #undef INTERFACE 1568 1569 /***************************************************************************** 1570 * IDirectInputDeviceW interface 1571 */ 1572 #define INTERFACE IDirectInputDeviceW 1573 DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown) 1574 { 1575 /*** IUnknown methods ***/ 1576 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1577 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1578 STDMETHOD_(ULONG,Release)(THIS) PURE; 1579 /*** IDirectInputDeviceW methods ***/ 1580 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1581 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1582 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1583 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1584 STDMETHOD(Acquire)(THIS) PURE; 1585 STDMETHOD(Unacquire)(THIS) PURE; 1586 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1587 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1588 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1589 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1590 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1591 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1592 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1593 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1594 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1595 }; 1596 #undef INTERFACE 1597 1598 #if !defined(__cplusplus) || defined(CINTERFACE) 1599 /*** IUnknown methods ***/ 1600 #define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1601 #define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) 1602 #define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) 1603 /*** IDirectInputDevice methods ***/ 1604 #define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1605 #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1606 #define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1607 #define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1608 #define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) 1609 #define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1610 #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1611 #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1612 #define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1613 #define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1614 #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1615 #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1616 #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1617 #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1618 #define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1619 #else 1620 /*** IUnknown methods ***/ 1621 #define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1622 #define IDirectInputDevice_AddRef(p) (p)->AddRef() 1623 #define IDirectInputDevice_Release(p) (p)->Release() 1624 /*** IDirectInputDevice methods ***/ 1625 #define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) 1626 #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1627 #define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) 1628 #define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) 1629 #define IDirectInputDevice_Acquire(p) (p)->Acquire() 1630 #define IDirectInputDevice_Unacquire(p) (p)->Unacquire() 1631 #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1632 #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1633 #define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) 1634 #define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) 1635 #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1636 #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1637 #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1638 #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1639 #define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1640 #endif 1641 1642 1643 /***************************************************************************** 1644 * IDirectInputDevice2A interface 1645 */ 1646 #define INTERFACE IDirectInputDevice2A 1647 DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA) 1648 { 1649 /*** IUnknown methods ***/ 1650 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1651 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1652 STDMETHOD_(ULONG,Release)(THIS) PURE; 1653 /*** IDirectInputDeviceA methods ***/ 1654 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1655 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1656 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1657 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1658 STDMETHOD(Acquire)(THIS) PURE; 1659 STDMETHOD(Unacquire)(THIS) PURE; 1660 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1661 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1662 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1663 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1664 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1665 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1666 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1667 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1668 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1669 /*** IDirectInputDevice2A methods ***/ 1670 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1671 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1672 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1673 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1674 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1675 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1676 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1677 STDMETHOD(Poll)(THIS) PURE; 1678 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1679 }; 1680 #undef INTERFACE 1681 1682 /***************************************************************************** 1683 * IDirectInputDevice2W interface 1684 */ 1685 #define INTERFACE IDirectInputDevice2W 1686 DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW) 1687 { 1688 /*** IUnknown methods ***/ 1689 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1690 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1691 STDMETHOD_(ULONG,Release)(THIS) PURE; 1692 /*** IDirectInputDeviceW methods ***/ 1693 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1694 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1695 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1696 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1697 STDMETHOD(Acquire)(THIS) PURE; 1698 STDMETHOD(Unacquire)(THIS) PURE; 1699 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1700 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1701 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1702 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1703 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1704 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1705 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1706 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1707 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1708 /*** IDirectInputDevice2W methods ***/ 1709 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1710 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1711 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 1712 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1713 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1714 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1715 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1716 STDMETHOD(Poll)(THIS) PURE; 1717 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1718 }; 1719 #undef INTERFACE 1720 1721 #if !defined(__cplusplus) || defined(CINTERFACE) 1722 /*** IUnknown methods ***/ 1723 #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1724 #define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) 1725 #define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) 1726 /*** IDirectInputDevice methods ***/ 1727 #define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1728 #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1729 #define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1730 #define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1731 #define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) 1732 #define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1733 #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1734 #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1735 #define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1736 #define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1737 #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1738 #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1739 #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1740 #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1741 #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1742 /*** IDirectInputDevice2 methods ***/ 1743 #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 1744 #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 1745 #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 1746 #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 1747 #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 1748 #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 1749 #define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1750 #define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) 1751 #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 1752 #else 1753 /*** IUnknown methods ***/ 1754 #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1755 #define IDirectInputDevice2_AddRef(p) (p)->AddRef() 1756 #define IDirectInputDevice2_Release(p) (p)->Release() 1757 /*** IDirectInputDevice methods ***/ 1758 #define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) 1759 #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1760 #define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) 1761 #define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) 1762 #define IDirectInputDevice2_Acquire(p) (p)->Acquire() 1763 #define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() 1764 #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1765 #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1766 #define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) 1767 #define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) 1768 #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1769 #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1770 #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1771 #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1772 #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1773 /*** IDirectInputDevice2 methods ***/ 1774 #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 1775 #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 1776 #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 1777 #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 1778 #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 1779 #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 1780 #define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) 1781 #define IDirectInputDevice2_Poll(p) (p)->Poll() 1782 #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 1783 #endif 1784 1785 /***************************************************************************** 1786 * IDirectInputDevice7A interface 1787 */ 1788 #define INTERFACE IDirectInputDevice7A 1789 DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A) 1790 { 1791 /*** IUnknown methods ***/ 1792 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1793 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1794 STDMETHOD_(ULONG,Release)(THIS) PURE; 1795 /*** IDirectInputDeviceA methods ***/ 1796 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1797 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1798 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1799 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1800 STDMETHOD(Acquire)(THIS) PURE; 1801 STDMETHOD(Unacquire)(THIS) PURE; 1802 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1803 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1804 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1805 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1806 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1807 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1808 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1809 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1810 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1811 /*** IDirectInputDevice2A methods ***/ 1812 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1813 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1814 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1815 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1816 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1817 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1818 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1819 STDMETHOD(Poll)(THIS) PURE; 1820 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1821 /*** IDirectInputDevice7A methods ***/ 1822 STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1823 STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1824 }; 1825 #undef INTERFACE 1826 1827 /***************************************************************************** 1828 * IDirectInputDevice7W interface 1829 */ 1830 #define INTERFACE IDirectInputDevice7W 1831 DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W) 1832 { 1833 /*** IUnknown methods ***/ 1834 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1835 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1836 STDMETHOD_(ULONG,Release)(THIS) PURE; 1837 /*** IDirectInputDeviceW methods ***/ 1838 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1839 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1840 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1841 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1842 STDMETHOD(Acquire)(THIS) PURE; 1843 STDMETHOD(Unacquire)(THIS) PURE; 1844 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1845 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1846 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1847 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1848 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1849 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1850 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1851 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1852 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1853 /*** IDirectInputDevice2W methods ***/ 1854 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1855 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1856 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 1857 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1858 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1859 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1860 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1861 STDMETHOD(Poll)(THIS) PURE; 1862 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1863 /*** IDirectInputDevice7W methods ***/ 1864 STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1865 STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1866 }; 1867 #undef INTERFACE 1868 1869 #if !defined(__cplusplus) || defined(CINTERFACE) 1870 /*** IUnknown methods ***/ 1871 #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1872 #define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) 1873 #define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) 1874 /*** IDirectInputDevice methods ***/ 1875 #define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1876 #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1877 #define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1878 #define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1879 #define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) 1880 #define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1881 #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1882 #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1883 #define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1884 #define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1885 #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1886 #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1887 #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1888 #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1889 #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1890 /*** IDirectInputDevice2 methods ***/ 1891 #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 1892 #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 1893 #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 1894 #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 1895 #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 1896 #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 1897 #define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1898 #define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) 1899 #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 1900 /*** IDirectInputDevice7 methods ***/ 1901 #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) 1902 #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) 1903 #else 1904 /*** IUnknown methods ***/ 1905 #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1906 #define IDirectInputDevice7_AddRef(p) (p)->AddRef() 1907 #define IDirectInputDevice7_Release(p) (p)->Release() 1908 /*** IDirectInputDevice methods ***/ 1909 #define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) 1910 #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1911 #define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) 1912 #define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) 1913 #define IDirectInputDevice7_Acquire(p) (p)->Acquire() 1914 #define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() 1915 #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1916 #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1917 #define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) 1918 #define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) 1919 #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1920 #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1921 #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1922 #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1923 #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1924 /*** IDirectInputDevice2 methods ***/ 1925 #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 1926 #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 1927 #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 1928 #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 1929 #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 1930 #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 1931 #define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) 1932 #define IDirectInputDevice7_Poll(p) (p)->Poll() 1933 #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 1934 /*** IDirectInputDevice7 methods ***/ 1935 #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) 1936 #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) 1937 #endif 1938 1939 1940 /***************************************************************************** 1941 * IDirectInputDevice8A interface 1942 */ 1943 #define INTERFACE IDirectInputDevice8A 1944 DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A) 1945 { 1946 /*** IUnknown methods ***/ 1947 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1948 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1949 STDMETHOD_(ULONG,Release)(THIS) PURE; 1950 /*** IDirectInputDeviceA methods ***/ 1951 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1952 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1953 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1954 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1955 STDMETHOD(Acquire)(THIS) PURE; 1956 STDMETHOD(Unacquire)(THIS) PURE; 1957 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1958 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1959 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1960 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1961 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1962 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1963 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1964 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1965 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1966 /*** IDirectInputDevice2A methods ***/ 1967 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1968 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1969 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1970 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1971 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1972 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1973 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1974 STDMETHOD(Poll)(THIS) PURE; 1975 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1976 /*** IDirectInputDevice7A methods ***/ 1977 STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1978 STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1979 /*** IDirectInputDevice8A methods ***/ 1980 STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; 1981 STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; 1982 STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE; 1983 }; 1984 #undef INTERFACE 1985 1986 /***************************************************************************** 1987 * IDirectInputDevice8W interface 1988 */ 1989 #define INTERFACE IDirectInputDevice8W 1990 DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W) 1991 { 1992 /*** IUnknown methods ***/ 1993 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1994 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1995 STDMETHOD_(ULONG,Release)(THIS) PURE; 1996 /*** IDirectInputDeviceW methods ***/ 1997 STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1998 STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1999 STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 2000 STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 2001 STDMETHOD(Acquire)(THIS) PURE; 2002 STDMETHOD(Unacquire)(THIS) PURE; 2003 STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 2004 STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 2005 STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 2006 STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 2007 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 2008 STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 2009 STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 2010 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2011 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 2012 /*** IDirectInputDevice2W methods ***/ 2013 STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 2014 STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 2015 STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 2016 STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 2017 STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 2018 STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 2019 STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 2020 STDMETHOD(Poll)(THIS) PURE; 2021 STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 2022 /*** IDirectInputDevice7W methods ***/ 2023 STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 2024 STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 2025 /*** IDirectInputDevice8W methods ***/ 2026 STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; 2027 STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; 2028 STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE; 2029 }; 2030 #undef INTERFACE 2031 2032 #if !defined(__cplusplus) || defined(CINTERFACE) 2033 /*** IUnknown methods ***/ 2034 #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2035 #define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) 2036 #define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) 2037 /*** IDirectInputDevice methods ***/ 2038 #define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 2039 #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 2040 #define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 2041 #define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 2042 #define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) 2043 #define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) 2044 #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 2045 #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 2046 #define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 2047 #define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 2048 #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 2049 #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 2050 #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 2051 #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2052 #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 2053 /*** IDirectInputDevice2 methods ***/ 2054 #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 2055 #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 2056 #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 2057 #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 2058 #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 2059 #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 2060 #define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) 2061 #define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) 2062 #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 2063 /*** IDirectInputDevice7 methods ***/ 2064 #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) 2065 #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) 2066 /*** IDirectInputDevice8 methods ***/ 2067 #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) 2068 #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) 2069 #define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) 2070 #else 2071 /*** IUnknown methods ***/ 2072 #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2073 #define IDirectInputDevice8_AddRef(p) (p)->AddRef() 2074 #define IDirectInputDevice8_Release(p) (p)->Release() 2075 /*** IDirectInputDevice methods ***/ 2076 #define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) 2077 #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 2078 #define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) 2079 #define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) 2080 #define IDirectInputDevice8_Acquire(p) (p)->Acquire() 2081 #define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() 2082 #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 2083 #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 2084 #define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) 2085 #define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) 2086 #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 2087 #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 2088 #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 2089 #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2090 #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 2091 /*** IDirectInputDevice2 methods ***/ 2092 #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 2093 #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 2094 #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 2095 #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 2096 #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 2097 #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 2098 #define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) 2099 #define IDirectInputDevice8_Poll(p) (p)->Poll() 2100 #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 2101 /*** IDirectInputDevice7 methods ***/ 2102 #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) 2103 #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) 2104 /*** IDirectInputDevice8 methods ***/ 2105 #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) 2106 #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) 2107 #define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) 2108 #endif 2109 2110 /* "Standard" Mouse report... */ 2111 typedef struct DIMOUSESTATE { 2112 LONG lX; 2113 LONG lY; 2114 LONG lZ; 2115 BYTE rgbButtons[4]; 2116 } DIMOUSESTATE; 2117 2118 /* "Standard" Mouse report for DInput 7... */ 2119 typedef struct DIMOUSESTATE2 { 2120 LONG lX; 2121 LONG lY; 2122 LONG lZ; 2123 BYTE rgbButtons[8]; 2124 } DIMOUSESTATE2; 2125 2126 #define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) 2127 #define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) 2128 #define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) 2129 #define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) 2130 #define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) 2131 #define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) 2132 #define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) 2133 #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) 2134 #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) 2135 #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) 2136 #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) 2137 2138 /* New DirectInput8 mouse definitions */ 2139 2140 #define DIMOUSE_XAXISAB (0x82000200 | DIMOFS_X) 2141 #define DIMOUSE_YAXISAB (0x82000200 | DIMOFS_Y) 2142 #define DIMOUSE_XAXIS (0x82000300 | DIMOFS_X) 2143 #define DIMOUSE_YAXIS (0x82000300 | DIMOFS_Y) 2144 #define DIMOUSE_WHEEL (0x82000300 | DIMOFS_Z) 2145 #define DIMOUSE_BUTTON0 (0x82000400 | DIMOFS_BUTTON0) 2146 #define DIMOUSE_BUTTON1 (0x82000400 | DIMOFS_BUTTON1) 2147 #define DIMOUSE_BUTTON2 (0x82000400 | DIMOFS_BUTTON2) 2148 #define DIMOUSE_BUTTON3 (0x82000400 | DIMOFS_BUTTON3) 2149 #define DIMOUSE_BUTTON4 (0x82000400 | DIMOFS_BUTTON4) 2150 #define DIMOUSE_BUTTON5 (0x82000400 | DIMOFS_BUTTON5) 2151 #define DIMOUSE_BUTTON6 (0x82000400 | DIMOFS_BUTTON6) 2152 #define DIMOUSE_BUTTON7 (0x82000400 | DIMOFS_BUTTON7) 2153 2154 #ifdef __cplusplus 2155 extern "C" { 2156 #endif 2157 extern const DIDATAFORMAT c_dfDIMouse; 2158 extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */ 2159 extern const DIDATAFORMAT c_dfDIKeyboard; 2160 extern const DIDATAFORMAT c_dfDIJoystick; 2161 extern const DIDATAFORMAT c_dfDIJoystick2; 2162 #ifdef __cplusplus 2163 }; 2164 #endif 2165 2166 #define DIAXIS_ANY_X_1 0xFF00C201 2167 #define DIAXIS_ANY_X_2 0xFF00C202 2168 #define DIAXIS_ANY_Y_1 0xFF014201 2169 #define DIAXIS_ANY_Y_2 0xFF014202 2170 #define DIAXIS_ANY_Z_1 0xFF01C201 2171 #define DIAXIS_ANY_Z_2 0xFF01C202 2172 #define DIAXIS_ANY_R_1 0xFF024201 2173 #define DIAXIS_ANY_R_2 0xFF024202 2174 #define DIAXIS_ANY_U_1 0xFF02C201 2175 #define DIAXIS_ANY_U_2 0xFF02C202 2176 #define DIAXIS_ANY_V_1 0xFF034201 2177 #define DIAXIS_ANY_V_2 0xFF034202 2178 #define DIAXIS_ANY_A_1 0xFF03C201 2179 #define DIAXIS_ANY_A_2 0xFF03C202 2180 #define DIAXIS_ANY_B_1 0xFF044201 2181 #define DIAXIS_ANY_B_2 0xFF044202 2182 #define DIAXIS_ANY_C_1 0xFF04C201 2183 #define DIAXIS_ANY_C_2 0xFF04C202 2184 #define DIAXIS_ANY_S_1 0xFF054201 2185 #define DIAXIS_ANY_S_2 0xFF054202 2186 #define DIAXIS_ANY_1 0xFF004201 2187 #define DIAXIS_ANY_2 0xFF004202 2188 #define DIAXIS_ANY_3 0xFF004203 2189 #define DIAXIS_ANY_4 0xFF004204 2190 #define DIPOV_ANY_1 0xFF004601 2191 #define DIPOV_ANY_2 0xFF004602 2192 #define DIPOV_ANY_3 0xFF004603 2193 #define DIPOV_ANY_4 0xFF004604 2194 #define DIBUTTON_ANY(instance) (0xFF004400 | (instance)) 2195 2196 #define DIVIRTUAL_FLYING_HELICOPTER 0x06000000 2197 #define DIBUTTON_FLYINGH_MENU 0x060004fd 2198 #define DIBUTTON_FLYINGH_FIRE 0x06001401 2199 #define DIBUTTON_FLYINGH_WEAPONS 0x06001402 2200 #define DIBUTTON_FLYINGH_TARGET 0x06001403 2201 #define DIBUTTON_FLYINGH_DEVICE 0x060044fe 2202 #define DIBUTTON_FLYINGH_PAUSE 0x060044fc 2203 #define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 2204 #define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004c07 2205 #define DIBUTTON_FLYINGH_COUNTER 0x06005404 2206 #define DIBUTTON_FLYINGH_VIEW 0x06006405 2207 #define DIBUTTON_FLYINGH_GEAR 0x06006406 2208 #define DIAXIS_FLYINGH_BANK 0x06008a01 2209 #define DIAXIS_FLYINGH_PITCH 0x06010a02 2210 #define DIAXIS_FLYINGH_COLLECTIVE 0x06018a03 2211 #define DIAXIS_FLYINGH_TORQUE 0x06025a04 2212 #define DIAXIS_FLYINGH_THROTTLE 0x0603da05 2213 #define DIBUTTON_FLYINGH_FASTER_LINK 0x0603dce0 2214 #define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603dce8 2215 #define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607c4e4 2216 #define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607c4ec 2217 #define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607c4e0 2218 #define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607c4e8 2219 2220 #define DIVIRTUAL_SPACESIM 0x07000000 2221 #define DIBUTTON_SPACESIM_FIRE 0x07000401 2222 #define DIBUTTON_SPACESIM_WEAPONS 0x07000402 2223 #define DIBUTTON_SPACESIM_TARGET 0x07000403 2224 #define DIBUTTON_SPACESIM_MENU 0x070004fd 2225 #define DIBUTTON_SPACESIM_VIEW 0x07004404 2226 #define DIBUTTON_SPACESIM_DISPLAY 0x07004405 2227 #define DIBUTTON_SPACESIM_RAISE 0x07004406 2228 #define DIBUTTON_SPACESIM_LOWER 0x07004407 2229 #define DIBUTTON_SPACESIM_GEAR 0x07004408 2230 #define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 2231 #define DIBUTTON_SPACESIM_PAUSE 0x070044fc 2232 #define DIBUTTON_SPACESIM_DEVICE 0x070044fe 2233 #define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 2234 #define DIBUTTON_SPACESIM_LEFT_LINK 0x0700c4e4 2235 #define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700c4ec 2236 #define DIAXIS_SPACESIM_LATERAL 0x07008201 2237 #define DIAXIS_SPACESIM_MOVE 0x07010202 2238 #define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144e0 2239 #define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144e8 2240 #define DIAXIS_SPACESIM_CLIMB 0x0701c204 2241 #define DIAXIS_SPACESIM_ROTATE 0x07024205 2242 #define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244e4 2243 #define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244ec 2244 #define DIAXIS_SPACESIM_THROTTLE 0x07038203 2245 #define DIBUTTON_SPACESIM_FASTER_LINK 0x0703c4e0 2246 #define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703c4e8 2247 #define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707c4e0 2248 #define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707c4e4 2249 #define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707c4e8 2250 #define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707c4ec 2251 2252 /***************************************************************************** 2253 * IDirectInputA interface 2254 */ 2255 #define INTERFACE IDirectInputA 2256 DECLARE_INTERFACE_(IDirectInputA,IUnknown) 2257 { 2258 /*** IUnknown methods ***/ 2259 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2260 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2261 STDMETHOD_(ULONG,Release)(THIS) PURE; 2262 /*** IDirectInputA methods ***/ 2263 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2264 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2265 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2266 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2267 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2268 }; 2269 #undef INTERFACE 2270 2271 /***************************************************************************** 2272 * IDirectInputW interface 2273 */ 2274 #define INTERFACE IDirectInputW 2275 DECLARE_INTERFACE_(IDirectInputW,IUnknown) 2276 { 2277 /*** IUnknown methods ***/ 2278 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2279 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2280 STDMETHOD_(ULONG,Release)(THIS) PURE; 2281 /*** IDirectInputW methods ***/ 2282 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2283 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2284 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2285 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2286 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2287 }; 2288 #undef INTERFACE 2289 2290 #if !defined(__cplusplus) || defined(CINTERFACE) 2291 /*** IUnknown methods ***/ 2292 #define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2293 #define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) 2294 #define IDirectInput_Release(p) (p)->lpVtbl->Release(p) 2295 /*** IDirectInput methods ***/ 2296 #define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2297 #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2298 #define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2299 #define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2300 #define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2301 #else 2302 /*** IUnknown methods ***/ 2303 #define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2304 #define IDirectInput_AddRef(p) (p)->AddRef() 2305 #define IDirectInput_Release(p) (p)->Release() 2306 /*** IDirectInput methods ***/ 2307 #define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2308 #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2309 #define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2310 #define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2311 #define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) 2312 #endif 2313 2314 /***************************************************************************** 2315 * IDirectInput2A interface 2316 */ 2317 #define INTERFACE IDirectInput2A 2318 DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA) 2319 { 2320 /*** IUnknown methods ***/ 2321 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2322 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2323 STDMETHOD_(ULONG,Release)(THIS) PURE; 2324 /*** IDirectInputA methods ***/ 2325 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2326 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2327 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2328 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2329 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2330 /*** IDirectInput2A methods ***/ 2331 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2332 }; 2333 #undef INTERFACE 2334 2335 /***************************************************************************** 2336 * IDirectInput2W interface 2337 */ 2338 #define INTERFACE IDirectInput2W 2339 DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW) 2340 { 2341 /*** IUnknown methods ***/ 2342 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2343 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2344 STDMETHOD_(ULONG,Release)(THIS) PURE; 2345 /*** IDirectInputW methods ***/ 2346 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2347 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2348 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2349 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2350 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2351 /*** IDirectInput2W methods ***/ 2352 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2353 }; 2354 #undef INTERFACE 2355 2356 #if !defined(__cplusplus) || defined(CINTERFACE) 2357 /*** IUnknown methods ***/ 2358 #define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2359 #define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) 2360 #define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) 2361 /*** IDirectInput methods ***/ 2362 #define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2363 #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2364 #define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2365 #define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2366 #define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2367 /*** IDirectInput2 methods ***/ 2368 #define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2369 #else 2370 /*** IUnknown methods ***/ 2371 #define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2372 #define IDirectInput2_AddRef(p) (p)->AddRef() 2373 #define IDirectInput2_Release(p) (p)->Release() 2374 /*** IDirectInput methods ***/ 2375 #define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2376 #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2377 #define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2378 #define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2379 #define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) 2380 /*** IDirectInput2 methods ***/ 2381 #define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2382 #endif 2383 2384 /***************************************************************************** 2385 * IDirectInput7A interface 2386 */ 2387 #define INTERFACE IDirectInput7A 2388 DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A) 2389 { 2390 /*** IUnknown methods ***/ 2391 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2392 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2393 STDMETHOD_(ULONG,Release)(THIS) PURE; 2394 /*** IDirectInputA methods ***/ 2395 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2396 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2397 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2398 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2399 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2400 /*** IDirectInput2A methods ***/ 2401 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2402 /*** IDirectInput7A methods ***/ 2403 STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; 2404 }; 2405 #undef INTERFACE 2406 2407 /***************************************************************************** 2408 * IDirectInput7W interface 2409 */ 2410 #define INTERFACE IDirectInput7W 2411 DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W) 2412 { 2413 /*** IUnknown methods ***/ 2414 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2415 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2416 STDMETHOD_(ULONG,Release)(THIS) PURE; 2417 /*** IDirectInputW methods ***/ 2418 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2419 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2420 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2421 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2422 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2423 /*** IDirectInput2W methods ***/ 2424 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2425 /*** IDirectInput7W methods ***/ 2426 STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; 2427 }; 2428 #undef INTERFACE 2429 2430 #if !defined(__cplusplus) || defined(CINTERFACE) 2431 /*** IUnknown methods ***/ 2432 #define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2433 #define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) 2434 #define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) 2435 /*** IDirectInput methods ***/ 2436 #define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2437 #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2438 #define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2439 #define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2440 #define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2441 /*** IDirectInput2 methods ***/ 2442 #define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2443 /*** IDirectInput7 methods ***/ 2444 #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) 2445 #else 2446 /*** IUnknown methods ***/ 2447 #define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2448 #define IDirectInput7_AddRef(p) (p)->AddRef() 2449 #define IDirectInput7_Release(p) (p)->Release() 2450 /*** IDirectInput methods ***/ 2451 #define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2452 #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2453 #define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2454 #define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2455 #define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) 2456 /*** IDirectInput2 methods ***/ 2457 #define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2458 /*** IDirectInput7 methods ***/ 2459 #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) 2460 #endif 2461 2462 2463 /***************************************************************************** 2464 * IDirectInput8A interface 2465 */ 2466 #define INTERFACE IDirectInput8A 2467 DECLARE_INTERFACE_(IDirectInput8A,IUnknown) 2468 { 2469 /*** IUnknown methods ***/ 2470 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2471 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2472 STDMETHOD_(ULONG,Release)(THIS) PURE; 2473 /*** IDirectInput8A methods ***/ 2474 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2475 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2476 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2477 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2478 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2479 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2480 STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2481 STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; 2482 }; 2483 #undef INTERFACE 2484 2485 /***************************************************************************** 2486 * IDirectInput8W interface 2487 */ 2488 #define INTERFACE IDirectInput8W 2489 DECLARE_INTERFACE_(IDirectInput8W,IUnknown) 2490 { 2491 /*** IUnknown methods ***/ 2492 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2493 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2494 STDMETHOD_(ULONG,Release)(THIS) PURE; 2495 /*** IDirectInput8W methods ***/ 2496 STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2497 STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2498 STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2499 STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2500 STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2501 STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2502 STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2503 STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; 2504 }; 2505 #undef INTERFACE 2506 2507 #if !defined(__cplusplus) || defined(CINTERFACE) 2508 /*** IUnknown methods ***/ 2509 #define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2510 #define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) 2511 #define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) 2512 /*** IDirectInput8 methods ***/ 2513 #define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2514 #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2515 #define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2516 #define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2517 #define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2518 #define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2519 #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) 2520 #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) 2521 #else 2522 /*** IUnknown methods ***/ 2523 #define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2524 #define IDirectInput8_AddRef(p) (p)->AddRef() 2525 #define IDirectInput8_Release(p) (p)->Release() 2526 /*** IDirectInput8 methods ***/ 2527 #define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2528 #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2529 #define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2530 #define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2531 #define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) 2532 #define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2533 #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) 2534 #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) 2535 #endif 2536 2537 2538 /* Export functions */ 2539 2540 #ifdef __cplusplus 2541 extern "C" { 2542 #endif 2543 2544 HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2545 2546 HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN); 2547 HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); 2548 #define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate) 2549 2550 HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2551 2552 #ifdef __cplusplus 2553 }; 2554 #endif 2555 2556 #endif /* __DINPUT_INCLUDED__ */ 2557