Reactos
at master 2556 lines 122 kB view raw
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 */ 30DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 31DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 32 33DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 34DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 35 36/* Interfaces */ 37DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 38DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 39DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 40DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 41DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 42DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 43DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 44DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 45DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 46DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 47DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 48DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 49DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 50DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 51DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 52DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 53DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 54 55/* Predefined object types */ 56DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 57DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 58DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 59DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 60DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 61DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 62DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 63DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 64DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 65DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 66DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 67 68/* Predefined product GUIDs */ 69DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 70DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 71DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 72DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 73DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 74DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 75DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 76 77/* predefined forcefeedback effects */ 78DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 79DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 80DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 81DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 82DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 83DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 84DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 85DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 86DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 87DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 88DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 89DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 90 91typedef struct IDirectInputA *LPDIRECTINPUTA; 92typedef struct IDirectInputW *LPDIRECTINPUTW; 93typedef struct IDirectInput2A *LPDIRECTINPUT2A; 94typedef struct IDirectInput2W *LPDIRECTINPUT2W; 95typedef struct IDirectInput7A *LPDIRECTINPUT7A; 96typedef struct IDirectInput7W *LPDIRECTINPUT7W; 97typedef struct IDirectInput8A *LPDIRECTINPUT8A; 98typedef struct IDirectInput8W *LPDIRECTINPUT8W; 99typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; 100typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; 101typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; 102typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; 103typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; 104typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; 105typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; 106typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; 107typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; 108typedef struct SysKeyboardA *LPSYSKEYBOARDA; 109typedef struct SysMouseA *LPSYSMOUSEA; 110 111#define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput) 112DECL_WINELIB_TYPE_AW(LPDIRECTINPUT) 113#define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2) 114DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2) 115#define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7) 116DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7) 117#define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8) 118DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8) 119#define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice) 120DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE) 121#define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2) 122DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2) 123#define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7) 124DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7) 125#define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8) 126DECL_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 323typedef 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; 331typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; 332typedef 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; 340typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; 341 342DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3) 343DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3) 344DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3) 345 346typedef 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; 363typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; 364 365typedef 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; 382typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; 383 384DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE) 385DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE) 386DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE) 387 388typedef 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; 396typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; 397typedef 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; 405typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; 406 407DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3) 408DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3) 409DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3) 410 411typedef 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; 422typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; 423 424typedef 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; 435typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; 436 437DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE) 438DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE) 439DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE) 440 441typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID); 442typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID); 443DECL_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 458typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID); 459typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID); 460DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB) 461 462typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID); 463 464typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID); 465typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID); 466DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) 467 468typedef 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 782typedef struct DIDEVICEOBJECTDATA_DX3 { 783 DWORD dwOfs; 784 DWORD dwData; 785 DWORD dwTimeStamp; 786 DWORD dwSequence; 787} DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3; 788typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3; 789 790typedef struct DIDEVICEOBJECTDATA { 791 DWORD dwOfs; 792 DWORD dwData; 793 DWORD dwTimeStamp; 794 DWORD dwSequence; 795 UINT_PTR uAppData; 796} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; 797typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; 798 799typedef struct _DIOBJECTDATAFORMAT { 800 const GUID *pguid; 801 DWORD dwOfs; 802 DWORD dwType; 803 DWORD dwFlags; 804} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; 805typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; 806 807typedef struct _DIDATAFORMAT { 808 DWORD dwSize; 809 DWORD dwObjSize; 810 DWORD dwFlags; 811 DWORD dwDataSize; 812 DWORD dwNumObjs; 813 LPDIOBJECTDATAFORMAT rgodf; 814} DIDATAFORMAT, *LPDIDATAFORMAT; 815typedef 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 827typedef struct DIPROPHEADER { 828 DWORD dwSize; 829 DWORD dwHeaderSize; 830 DWORD dwObj; 831 DWORD dwHow; 832} DIPROPHEADER,*LPDIPROPHEADER; 833typedef 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 842typedef struct DIPROPDWORD { 843 DIPROPHEADER diph; 844 DWORD dwData; 845} DIPROPDWORD, *LPDIPROPDWORD; 846typedef const DIPROPDWORD *LPCDIPROPDWORD; 847 848typedef struct DIPROPRANGE { 849 DIPROPHEADER diph; 850 LONG lMin; 851 LONG lMax; 852} DIPROPRANGE, *LPDIPROPRANGE; 853typedef const DIPROPRANGE *LPCDIPROPRANGE; 854 855#define DIPROPRANGE_NOMIN ((LONG)0x80000000) 856#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) 857 858typedef struct DIPROPCAL { 859 DIPROPHEADER diph; 860 LONG lMin; 861 LONG lCenter; 862 LONG lMax; 863} DIPROPCAL, *LPDIPROPCAL; 864typedef const DIPROPCAL *LPCDIPROPCAL; 865 866typedef struct DIPROPGUIDANDPATH { 867 DIPROPHEADER diph; 868 GUID guidClass; 869 WCHAR wszPath[MAX_PATH]; 870} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; 871typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; 872 873typedef struct DIPROPSTRING { 874 DIPROPHEADER diph; 875 WCHAR wsz[MAX_PATH]; 876} DIPROPSTRING, *LPDIPROPSTRING; 877typedef 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 922typedef 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 931typedef 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 1041typedef struct DICONSTANTFORCE { 1042 LONG lMagnitude; 1043} DICONSTANTFORCE, *LPDICONSTANTFORCE; 1044typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; 1045 1046typedef struct DIRAMPFORCE { 1047 LONG lStart; 1048 LONG lEnd; 1049} DIRAMPFORCE, *LPDIRAMPFORCE; 1050typedef const DIRAMPFORCE *LPCDIRAMPFORCE; 1051 1052typedef struct DIPERIODIC { 1053 DWORD dwMagnitude; 1054 LONG lOffset; 1055 DWORD dwPhase; 1056 DWORD dwPeriod; 1057} DIPERIODIC, *LPDIPERIODIC; 1058typedef const DIPERIODIC *LPCDIPERIODIC; 1059 1060typedef struct DICONDITION { 1061 LONG lOffset; 1062 LONG lPositiveCoefficient; 1063 LONG lNegativeCoefficient; 1064 DWORD dwPositiveSaturation; 1065 DWORD dwNegativeSaturation; 1066 LONG lDeadBand; 1067} DICONDITION, *LPDICONDITION; 1068typedef const DICONDITION *LPCDICONDITION; 1069 1070typedef struct DICUSTOMFORCE { 1071 DWORD cChannels; 1072 DWORD dwSamplePeriod; 1073 DWORD cSamples; 1074 LPLONG rglForceData; 1075} DICUSTOMFORCE, *LPDICUSTOMFORCE; 1076typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; 1077 1078typedef struct DIENVELOPE { 1079 DWORD dwSize; 1080 DWORD dwAttackLevel; 1081 DWORD dwAttackTime; 1082 DWORD dwFadeLevel; 1083 DWORD dwFadeTime; 1084} DIENVELOPE, *LPDIENVELOPE; 1085typedef const DIENVELOPE *LPCDIENVELOPE; 1086 1087typedef 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; 1102typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; 1103 1104typedef 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; 1120typedef const DIEFFECT *LPCDIEFFECT; 1121typedef DIEFFECT DIEFFECT_DX6; 1122typedef LPDIEFFECT LPDIEFFECT_DX6; 1123 1124typedef 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; 1132typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; 1133 1134typedef 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; 1142typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; 1143 1144DECL_WINELIB_TYPE_AW(DIEFFECTINFO) 1145DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO) 1146DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO) 1147 1148typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); 1149typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); 1150 1151typedef struct DIEFFESCAPE { 1152 DWORD dwSize; 1153 DWORD dwCommand; 1154 LPVOID lpvInBuffer; 1155 DWORD cbInBuffer; 1156 LPVOID lpvOutBuffer; 1157 DWORD cbOutBuffer; 1158} DIEFFESCAPE, *LPDIEFFESCAPE; 1159 1160typedef 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 1172typedef 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 */ 1250typedef struct DIFILEEFFECT { 1251 DWORD dwSize; 1252 GUID GuidEffect; 1253 LPCDIEFFECT lpDiEffect; 1254 CHAR szFriendlyName[MAX_PATH]; 1255} DIFILEEFFECT, *LPDIFILEEFFECT; 1256 1257typedef const DIFILEEFFECT *LPCDIFILEEFFECT; 1258typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); 1259 1260/* DInput 8 structures and types */ 1261typedef 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; 1273typedef const DIACTIONA *LPCDIACTIONA; 1274 1275typedef 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; 1287typedef const DIACTIONW *LPCDIACTIONW; 1288 1289DECL_WINELIB_TYPE_AW(DIACTION) 1290DECL_WINELIB_TYPE_AW(LPDIACTION) 1291DECL_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 1307typedef 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; 1323typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; 1324 1325typedef 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; 1341typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; 1342 1343DECL_WINELIB_TYPE_AW(DIACTIONFORMAT) 1344DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT) 1345DECL_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 1365typedef DWORD D3DCOLOR; 1366#define D3DCOLOR_DEFINED 1367#endif 1368 1369typedef 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; 1380typedef const DICOLORSET *LPCDICOLORSET; 1381 1382typedef 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; 1392typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; 1393 1394typedef 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; 1404typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; 1405 1406DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS) 1407DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS) 1408DECL_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 1420typedef 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; 1431typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; 1432 1433typedef 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; 1444typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; 1445 1446DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO) 1447DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO) 1448DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO) 1449 1450typedef 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; 1461typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; 1462 1463typedef 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; 1474typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; 1475 1476DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER) 1477DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER) 1478DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER) 1479 1480 1481/***************************************************************************** 1482 * IDirectInputEffect interface 1483 */ 1484#define INTERFACE IDirectInputEffect 1485DECLARE_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 1544DECLARE_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 1573DECLARE_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 1647DECLARE_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 1686DECLARE_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 1789DECLARE_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 1831DECLARE_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 1944DECLARE_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 1990DECLARE_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... */ 2111typedef 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... */ 2119typedef 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 2155extern "C" { 2156#endif 2157extern const DIDATAFORMAT c_dfDIMouse; 2158extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */ 2159extern const DIDATAFORMAT c_dfDIKeyboard; 2160extern const DIDATAFORMAT c_dfDIJoystick; 2161extern 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 2256DECLARE_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 2275DECLARE_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 2318DECLARE_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 2339DECLARE_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 2388DECLARE_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 2411DECLARE_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 2467DECLARE_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 2489DECLARE_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 2541extern "C" { 2542#endif 2543 2544HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2545 2546HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN); 2547HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); 2548#define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate) 2549 2550HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2551 2552#ifdef __cplusplus 2553}; 2554#endif 2555 2556#endif /* __DINPUT_INCLUDED__ */