ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dinput.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) the Wine project
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  */
00018 
00019 #ifndef __WINE_DINPUT_H
00020 #define __WINE_DINPUT_H
00021 
00022 #include <objbase.h>
00023 
00024 #ifndef DIRECTINPUT_VERSION
00025 #define DIRECTINPUT_VERSION 0x0800
00026 #endif
00027 
00028 /* Classes */
00029 DEFINE_GUID(CLSID_DirectInput,      0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00030 DEFINE_GUID(CLSID_DirectInputDevice,    0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00031 
00032 DEFINE_GUID(CLSID_DirectInput8,     0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00033 DEFINE_GUID(CLSID_DirectInputDevice8,   0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00034 
00035 /* Interfaces */
00036 DEFINE_GUID(IID_IDirectInputA,      0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00037 DEFINE_GUID(IID_IDirectInputW,      0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00038 DEFINE_GUID(IID_IDirectInput2A,     0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00039 DEFINE_GUID(IID_IDirectInput2W,     0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00040 DEFINE_GUID(IID_IDirectInput7A,     0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
00041 DEFINE_GUID(IID_IDirectInput7W,     0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
00042 DEFINE_GUID(IID_IDirectInput8A,     0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
00043 DEFINE_GUID(IID_IDirectInput8W,     0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
00044 DEFINE_GUID(IID_IDirectInputDeviceA,    0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00045 DEFINE_GUID(IID_IDirectInputDeviceW,    0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00046 DEFINE_GUID(IID_IDirectInputDevice2A,   0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00047 DEFINE_GUID(IID_IDirectInputDevice2W,   0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00048 DEFINE_GUID(IID_IDirectInputDevice7A,   0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
00049 DEFINE_GUID(IID_IDirectInputDevice7W,   0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
00050 DEFINE_GUID(IID_IDirectInputDevice8A,   0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
00051 DEFINE_GUID(IID_IDirectInputDevice8W,   0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
00052 DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00053 
00054 /* Predefined object types */
00055 DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00056 DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00057 DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00058 DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00059 DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00060 DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00061 DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00062 DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00063 DEFINE_GUID(GUID_Key,   0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00064 DEFINE_GUID(GUID_POV,   0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00065 DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00066 
00067 /* Predefined product GUIDs */
00068 DEFINE_GUID(GUID_SysMouse,  0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00069 DEFINE_GUID(GUID_SysKeyboard,   0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00070 DEFINE_GUID(GUID_Joystick,  0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00071 DEFINE_GUID(GUID_SysMouseEm,    0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00072 DEFINE_GUID(GUID_SysMouseEm2,   0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00073 DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00074 DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
00075 
00076 /* predefined forcefeedback effects */
00077 DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00078 DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00079 DEFINE_GUID(GUID_Square,    0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00080 DEFINE_GUID(GUID_Sine,      0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00081 DEFINE_GUID(GUID_Triangle,  0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00082 DEFINE_GUID(GUID_SawtoothUp,    0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00083 DEFINE_GUID(GUID_SawtoothDown,  0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00084 DEFINE_GUID(GUID_Spring,    0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00085 DEFINE_GUID(GUID_Damper,    0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00086 DEFINE_GUID(GUID_Inertia,   0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00087 DEFINE_GUID(GUID_Friction,  0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00088 DEFINE_GUID(GUID_CustomForce,   0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
00089 
00090 typedef struct IDirectInputA *LPDIRECTINPUTA;
00091 typedef struct IDirectInputW *LPDIRECTINPUTW;
00092 typedef struct IDirectInput2A *LPDIRECTINPUT2A;
00093 typedef struct IDirectInput2W *LPDIRECTINPUT2W;
00094 typedef struct IDirectInput7A *LPDIRECTINPUT7A;
00095 typedef struct IDirectInput7W *LPDIRECTINPUT7W;
00096 typedef struct IDirectInput8A *LPDIRECTINPUT8A;
00097 typedef struct IDirectInput8W *LPDIRECTINPUT8W;
00098 typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
00099 typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
00100 typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
00101 typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
00102 typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;
00103 typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;
00104 typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;
00105 typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;
00106 typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
00107 typedef struct SysKeyboardA *LPSYSKEYBOARDA;
00108 typedef struct SysMouseA *LPSYSMOUSEA;
00109 
00110 #define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput)
00111 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT)
00112 #define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2)
00113 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2)
00114 #define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7)
00115 DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7)
00116 #define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice)
00117 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE)
00118 #define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2)
00119 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2)
00120 #define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7)
00121 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7)
00122 #define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8)
00123 DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8)
00124 
00125 #define DI_OK                           S_OK
00126 #define DI_NOTATTACHED                  S_FALSE
00127 #define DI_BUFFEROVERFLOW               S_FALSE
00128 #define DI_PROPNOEFFECT                 S_FALSE
00129 #define DI_NOEFFECT                     S_FALSE
00130 #define DI_POLLEDDEVICE                 ((HRESULT)0x00000002L)
00131 #define DI_DOWNLOADSKIPPED              ((HRESULT)0x00000003L)
00132 #define DI_EFFECTRESTARTED              ((HRESULT)0x00000004L)
00133 #define DI_TRUNCATED                    ((HRESULT)0x00000008L)
00134 #define DI_TRUNCATEDANDRESTARTED        ((HRESULT)0x0000000CL)
00135 
00136 #define DIERR_OLDDIRECTINPUTVERSION     \
00137     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
00138 #define DIERR_BETADIRECTINPUTVERSION    \
00139     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
00140 #define DIERR_BADDRIVERVER              \
00141     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
00142 #define DIERR_DEVICENOTREG              REGDB_E_CLASSNOTREG
00143 #define DIERR_NOTFOUND                  \
00144     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
00145 #define DIERR_OBJECTNOTFOUND            \
00146     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
00147 #define DIERR_INVALIDPARAM              E_INVALIDARG
00148 #define DIERR_NOINTERFACE               E_NOINTERFACE
00149 #define DIERR_GENERIC                   E_FAIL
00150 #define DIERR_OUTOFMEMORY               E_OUTOFMEMORY
00151 #define DIERR_UNSUPPORTED               E_NOTIMPL
00152 #define DIERR_NOTINITIALIZED            \
00153     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
00154 #define DIERR_ALREADYINITIALIZED        \
00155     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
00156 #define DIERR_NOAGGREGATION             CLASS_E_NOAGGREGATION
00157 #define DIERR_OTHERAPPHASPRIO           E_ACCESSDENIED
00158 #define DIERR_INPUTLOST                 \
00159     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
00160 #define DIERR_ACQUIRED                  \
00161     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
00162 #define DIERR_NOTACQUIRED               \
00163     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
00164 #define DIERR_READONLY                  E_ACCESSDENIED
00165 #define DIERR_HANDLEEXISTS              E_ACCESSDENIED
00166 #ifndef E_PENDING
00167 #define E_PENDING                       0x8000000AL
00168 #endif
00169 #define DIERR_INSUFFICIENTPRIVS         0x80040200L
00170 #define DIERR_DEVICEFULL                0x80040201L
00171 #define DIERR_MOREDATA                  0x80040202L
00172 #define DIERR_NOTDOWNLOADED             0x80040203L
00173 #define DIERR_HASEFFECTS                0x80040204L
00174 #define DIERR_NOTEXCLUSIVEACQUIRED      0x80040205L
00175 #define DIERR_INCOMPLETEEFFECT          0x80040206L
00176 #define DIERR_NOTBUFFERED               0x80040207L
00177 #define DIERR_EFFECTPLAYING             0x80040208L
00178 #define DIERR_UNPLUGGED                 0x80040209L
00179 #define DIERR_REPORTFULL                0x8004020AL
00180 
00181 #define DIENUM_STOP                     0
00182 #define DIENUM_CONTINUE                 1
00183 
00184 #define DIEDFL_ALLDEVICES               0x00000000
00185 #define DIEDFL_ATTACHEDONLY             0x00000000
00186 #define DIEDFL_FORCEFEEDBACK            0x00000100
00187 #define DIEDFL_INCLUDEALIASES           0x00010000
00188 #define DIEDFL_INCLUDEPHANTOMS          0x00020000
00189 #define DIEDFL_INCLUDEHIDDEN        0x00040000
00190 
00191 #define DIDEVTYPE_DEVICE                1
00192 #define DIDEVTYPE_MOUSE                 2
00193 #define DIDEVTYPE_KEYBOARD              3
00194 #define DIDEVTYPE_JOYSTICK              4
00195 #define DIDEVTYPE_HID                   0x00010000
00196 
00197 #define DI8DEVCLASS_ALL             0
00198 #define DI8DEVCLASS_DEVICE          1
00199 #define DI8DEVCLASS_POINTER         2
00200 #define DI8DEVCLASS_KEYBOARD        3
00201 #define DI8DEVCLASS_GAMECTRL        4
00202 
00203 #define DI8DEVTYPE_DEVICE           0x11
00204 #define DI8DEVTYPE_MOUSE            0x12
00205 #define DI8DEVTYPE_KEYBOARD         0x13
00206 #define DI8DEVTYPE_JOYSTICK         0x14
00207 #define DI8DEVTYPE_GAMEPAD          0x15
00208 #define DI8DEVTYPE_DRIVING          0x16
00209 #define DI8DEVTYPE_FLIGHT           0x17
00210 #define DI8DEVTYPE_1STPERSON        0x18
00211 #define DI8DEVTYPE_DEVICECTRL       0x19
00212 #define DI8DEVTYPE_SCREENPOINTER    0x1A
00213 #define DI8DEVTYPE_REMOTE           0x1B
00214 #define DI8DEVTYPE_SUPPLEMENTAL     0x1C
00215 
00216 #define DIDEVTYPEMOUSE_UNKNOWN          1
00217 #define DIDEVTYPEMOUSE_TRADITIONAL      2
00218 #define DIDEVTYPEMOUSE_FINGERSTICK      3
00219 #define DIDEVTYPEMOUSE_TOUCHPAD         4
00220 #define DIDEVTYPEMOUSE_TRACKBALL        5
00221 
00222 #define DIDEVTYPEKEYBOARD_UNKNOWN       0
00223 #define DIDEVTYPEKEYBOARD_PCXT          1
00224 #define DIDEVTYPEKEYBOARD_OLIVETTI      2
00225 #define DIDEVTYPEKEYBOARD_PCAT          3
00226 #define DIDEVTYPEKEYBOARD_PCENH         4
00227 #define DIDEVTYPEKEYBOARD_NOKIA1050     5
00228 #define DIDEVTYPEKEYBOARD_NOKIA9140     6
00229 #define DIDEVTYPEKEYBOARD_NEC98         7
00230 #define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
00231 #define DIDEVTYPEKEYBOARD_NEC98106      9
00232 #define DIDEVTYPEKEYBOARD_JAPAN106     10
00233 #define DIDEVTYPEKEYBOARD_JAPANAX      11
00234 #define DIDEVTYPEKEYBOARD_J3100        12
00235 
00236 #define DIDEVTYPEJOYSTICK_UNKNOWN       1
00237 #define DIDEVTYPEJOYSTICK_TRADITIONAL   2
00238 #define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
00239 #define DIDEVTYPEJOYSTICK_GAMEPAD       4
00240 #define DIDEVTYPEJOYSTICK_RUDDER        5
00241 #define DIDEVTYPEJOYSTICK_WHEEL         6
00242 #define DIDEVTYPEJOYSTICK_HEADTRACKER   7
00243 
00244 #define DI8DEVTYPEMOUSE_UNKNOWN                     1
00245 #define DI8DEVTYPEMOUSE_TRADITIONAL                 2
00246 #define DI8DEVTYPEMOUSE_FINGERSTICK                 3
00247 #define DI8DEVTYPEMOUSE_TOUCHPAD                    4
00248 #define DI8DEVTYPEMOUSE_TRACKBALL                   5
00249 #define DI8DEVTYPEMOUSE_ABSOLUTE                    6
00250 
00251 #define DI8DEVTYPEKEYBOARD_UNKNOWN                  0
00252 #define DI8DEVTYPEKEYBOARD_PCXT                     1
00253 #define DI8DEVTYPEKEYBOARD_OLIVETTI                 2
00254 #define DI8DEVTYPEKEYBOARD_PCAT                     3
00255 #define DI8DEVTYPEKEYBOARD_PCENH                    4
00256 #define DI8DEVTYPEKEYBOARD_NOKIA1050                5
00257 #define DI8DEVTYPEKEYBOARD_NOKIA9140                6
00258 #define DI8DEVTYPEKEYBOARD_NEC98                    7
00259 #define DI8DEVTYPEKEYBOARD_NEC98LAPTOP              8
00260 #define DI8DEVTYPEKEYBOARD_NEC98106                 9
00261 #define DI8DEVTYPEKEYBOARD_JAPAN106                10
00262 #define DI8DEVTYPEKEYBOARD_JAPANAX                 11
00263 #define DI8DEVTYPEKEYBOARD_J3100                   12
00264 
00265 #define DI8DEVTYPE_LIMITEDGAMESUBTYPE               1
00266 
00267 #define DI8DEVTYPEJOYSTICK_LIMITED                  DI8DEVTYPE_LIMITEDGAMESUBTYPE
00268 #define DI8DEVTYPEJOYSTICK_STANDARD                 2
00269 
00270 #define DI8DEVTYPEGAMEPAD_LIMITED                   DI8DEVTYPE_LIMITEDGAMESUBTYPE
00271 #define DI8DEVTYPEGAMEPAD_STANDARD                  2
00272 #define DI8DEVTYPEGAMEPAD_TILT                      3
00273 
00274 #define DI8DEVTYPEDRIVING_LIMITED                   DI8DEVTYPE_LIMITEDGAMESUBTYPE
00275 #define DI8DEVTYPEDRIVING_COMBINEDPEDALS            2
00276 #define DI8DEVTYPEDRIVING_DUALPEDALS                3
00277 #define DI8DEVTYPEDRIVING_THREEPEDALS               4
00278 #define DI8DEVTYPEDRIVING_HANDHELD                  5
00279 
00280 #define DI8DEVTYPEFLIGHT_LIMITED                    DI8DEVTYPE_LIMITEDGAMESUBTYPE
00281 #define DI8DEVTYPEFLIGHT_STICK                      2
00282 #define DI8DEVTYPEFLIGHT_YOKE                       3
00283 #define DI8DEVTYPEFLIGHT_RC                         4
00284 
00285 #define DI8DEVTYPE1STPERSON_LIMITED                 DI8DEVTYPE_LIMITEDGAMESUBTYPE
00286 #define DI8DEVTYPE1STPERSON_UNKNOWN                 2
00287 #define DI8DEVTYPE1STPERSON_SIXDOF                  3
00288 #define DI8DEVTYPE1STPERSON_SHOOTER                 4
00289 
00290 #define DI8DEVTYPESCREENPTR_UNKNOWN                 2
00291 #define DI8DEVTYPESCREENPTR_LIGHTGUN                3
00292 #define DI8DEVTYPESCREENPTR_LIGHTPEN                4
00293 #define DI8DEVTYPESCREENPTR_TOUCH                   5
00294 
00295 #define DI8DEVTYPEREMOTE_UNKNOWN                    2
00296 
00297 #define DI8DEVTYPEDEVICECTRL_UNKNOWN                2
00298 #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION         3
00299 #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4
00300 
00301 #define DI8DEVTYPESUPPLEMENTAL_UNKNOWN              2
00302 #define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER    3
00303 #define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER          4
00304 #define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER          5
00305 #define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE       6
00306 #define DI8DEVTYPESUPPLEMENTAL_SHIFTER              7
00307 #define DI8DEVTYPESUPPLEMENTAL_THROTTLE             8
00308 #define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE        9
00309 #define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS      10
00310 #define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS          11
00311 #define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS         12
00312 #define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS        13
00313 
00314 #define GET_DIDEVICE_TYPE(dwDevType)     LOBYTE(dwDevType)
00315 #define GET_DIDEVICE_SUBTYPE(dwDevType)  HIBYTE(dwDevType)
00316 
00317 typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
00318     DWORD   dwSize;
00319     GUID    guidType;
00320     DWORD   dwOfs;
00321     DWORD   dwType;
00322     DWORD   dwFlags;
00323     CHAR    tszName[MAX_PATH];
00324 } DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
00325 typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
00326 typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
00327     DWORD   dwSize;
00328     GUID    guidType;
00329     DWORD   dwOfs;
00330     DWORD   dwType;
00331     DWORD   dwFlags;
00332     WCHAR   tszName[MAX_PATH];
00333 } DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
00334 typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
00335 
00336 DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3)
00337 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3)
00338 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3)
00339 
00340 typedef struct DIDEVICEOBJECTINSTANCEA {
00341     DWORD   dwSize;
00342     GUID    guidType;
00343     DWORD   dwOfs;
00344     DWORD   dwType;
00345     DWORD   dwFlags;
00346     CHAR    tszName[MAX_PATH];
00347 #if(DIRECTINPUT_VERSION >= 0x0500)
00348     DWORD   dwFFMaxForce;
00349     DWORD   dwFFForceResolution;
00350     WORD    wCollectionNumber;
00351     WORD    wDesignatorIndex;
00352     WORD    wUsagePage;
00353     WORD    wUsage;
00354     DWORD   dwDimension;
00355     WORD    wExponent;
00356     WORD    wReserved;
00357 #endif /* DIRECTINPUT_VERSION >= 0x0500 */
00358 } DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
00359 typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
00360 
00361 typedef struct DIDEVICEOBJECTINSTANCEW {
00362     DWORD   dwSize;
00363     GUID    guidType;
00364     DWORD   dwOfs;
00365     DWORD   dwType;
00366     DWORD   dwFlags;
00367     WCHAR   tszName[MAX_PATH];
00368 #if(DIRECTINPUT_VERSION >= 0x0500)
00369     DWORD   dwFFMaxForce;
00370     DWORD   dwFFForceResolution;
00371     WORD    wCollectionNumber;
00372     WORD    wDesignatorIndex;
00373     WORD    wUsagePage;
00374     WORD    wUsage;
00375     DWORD   dwDimension;
00376     WORD    wExponent;
00377     WORD    wReserved;
00378 #endif /* DIRECTINPUT_VERSION >= 0x0500 */
00379 } DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
00380 typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
00381 
00382 DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE)
00383 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE)
00384 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE)
00385 
00386 typedef struct DIDEVICEINSTANCE_DX3A {
00387     DWORD   dwSize;
00388     GUID    guidInstance;
00389     GUID    guidProduct;
00390     DWORD   dwDevType;
00391     CHAR    tszInstanceName[MAX_PATH];
00392     CHAR    tszProductName[MAX_PATH];
00393 } DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
00394 typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
00395 typedef struct DIDEVICEINSTANCE_DX3W {
00396     DWORD   dwSize;
00397     GUID    guidInstance;
00398     GUID    guidProduct;
00399     DWORD   dwDevType;
00400     WCHAR   tszInstanceName[MAX_PATH];
00401     WCHAR   tszProductName[MAX_PATH];
00402 } DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
00403 typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
00404 
00405 DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3)
00406 DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3)
00407 DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3)
00408 
00409 typedef struct DIDEVICEINSTANCEA {
00410     DWORD   dwSize;
00411     GUID    guidInstance;
00412     GUID    guidProduct;
00413     DWORD   dwDevType;
00414     CHAR    tszInstanceName[MAX_PATH];
00415     CHAR    tszProductName[MAX_PATH];
00416 #if(DIRECTINPUT_VERSION >= 0x0500)
00417     GUID    guidFFDriver;
00418     WORD    wUsagePage;
00419     WORD    wUsage;
00420 #endif /* DIRECTINPUT_VERSION >= 0x0500 */
00421 } DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
00422 typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
00423 
00424 typedef struct DIDEVICEINSTANCEW {
00425     DWORD   dwSize;
00426     GUID    guidInstance;
00427     GUID    guidProduct;
00428     DWORD   dwDevType;
00429     WCHAR   tszInstanceName[MAX_PATH];
00430     WCHAR   tszProductName[MAX_PATH];
00431 #if(DIRECTINPUT_VERSION >= 0x0500)
00432     GUID    guidFFDriver;
00433     WORD    wUsagePage;
00434     WORD    wUsage;
00435 #endif /* DIRECTINPUT_VERSION >= 0x0500 */
00436 } DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
00437 typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
00438 
00439 DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE)
00440 DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE)
00441 DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE)
00442 
00443 #define DIEDBSFL_ATTACHEDONLY       0x00000000
00444 #define DIEDBSFL_THISUSER           0x00000010
00445 #define DIEDBSFL_FORCEFEEDBACK      DIEDFL_FORCEFEEDBACK
00446 #define DIEDBSFL_AVAILABLEDEVICES   0x00001000
00447 #define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000
00448 #define DIEDBSFL_NONGAMINGDEVICES   0x00004000
00449 #define DIEDBSFL_VALID              0x00007110
00450 
00451 typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID);
00452 typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID);
00453 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK)
00454 
00455 #if DIRECTINPUT_VERSION >= 0x0800
00456 typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID);
00457 typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID);
00458 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB)
00459 #endif
00460 
00461 typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID);
00462 
00463 typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID);
00464 typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID);
00465 DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK)
00466 
00467 typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
00468 
00469 #define DIK_ESCAPE          0x01
00470 #define DIK_1               0x02
00471 #define DIK_2               0x03
00472 #define DIK_3               0x04
00473 #define DIK_4               0x05
00474 #define DIK_5               0x06
00475 #define DIK_6               0x07
00476 #define DIK_7               0x08
00477 #define DIK_8               0x09
00478 #define DIK_9               0x0A
00479 #define DIK_0               0x0B
00480 #define DIK_MINUS           0x0C    /* - on main keyboard */
00481 #define DIK_EQUALS          0x0D
00482 #define DIK_BACK            0x0E    /* backspace */
00483 #define DIK_TAB             0x0F
00484 #define DIK_Q               0x10
00485 #define DIK_W               0x11
00486 #define DIK_E               0x12
00487 #define DIK_R               0x13
00488 #define DIK_T               0x14
00489 #define DIK_Y               0x15
00490 #define DIK_U               0x16
00491 #define DIK_I               0x17
00492 #define DIK_O               0x18
00493 #define DIK_P               0x19
00494 #define DIK_LBRACKET        0x1A
00495 #define DIK_RBRACKET        0x1B
00496 #define DIK_RETURN          0x1C    /* Enter on main keyboard */
00497 #define DIK_LCONTROL        0x1D
00498 #define DIK_A               0x1E
00499 #define DIK_S               0x1F
00500 #define DIK_D               0x20
00501 #define DIK_F               0x21
00502 #define DIK_G               0x22
00503 #define DIK_H               0x23
00504 #define DIK_J               0x24
00505 #define DIK_K               0x25
00506 #define DIK_L               0x26
00507 #define DIK_SEMICOLON       0x27
00508 #define DIK_APOSTROPHE      0x28
00509 #define DIK_GRAVE           0x29    /* accent grave */
00510 #define DIK_LSHIFT          0x2A
00511 #define DIK_BACKSLASH       0x2B
00512 #define DIK_Z               0x2C
00513 #define DIK_X               0x2D
00514 #define DIK_C               0x2E
00515 #define DIK_V               0x2F
00516 #define DIK_B               0x30
00517 #define DIK_N               0x31
00518 #define DIK_M               0x32
00519 #define DIK_COMMA           0x33
00520 #define DIK_PERIOD          0x34    /* . on main keyboard */
00521 #define DIK_SLASH           0x35    /* / on main keyboard */
00522 #define DIK_RSHIFT          0x36
00523 #define DIK_MULTIPLY        0x37    /* * on numeric keypad */
00524 #define DIK_LMENU           0x38    /* left Alt */
00525 #define DIK_SPACE           0x39
00526 #define DIK_CAPITAL         0x3A
00527 #define DIK_F1              0x3B
00528 #define DIK_F2              0x3C
00529 #define DIK_F3              0x3D
00530 #define DIK_F4              0x3E
00531 #define DIK_F5              0x3F
00532 #define DIK_F6              0x40
00533 #define DIK_F7              0x41
00534 #define DIK_F8              0x42
00535 #define DIK_F9              0x43
00536 #define DIK_F10             0x44
00537 #define DIK_NUMLOCK         0x45
00538 #define DIK_SCROLL          0x46    /* Scroll Lock */
00539 #define DIK_NUMPAD7         0x47
00540 #define DIK_NUMPAD8         0x48
00541 #define DIK_NUMPAD9         0x49
00542 #define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
00543 #define DIK_NUMPAD4         0x4B
00544 #define DIK_NUMPAD5         0x4C
00545 #define DIK_NUMPAD6         0x4D
00546 #define DIK_ADD             0x4E    /* + on numeric keypad */
00547 #define DIK_NUMPAD1         0x4F
00548 #define DIK_NUMPAD2         0x50
00549 #define DIK_NUMPAD3         0x51
00550 #define DIK_NUMPAD0         0x52
00551 #define DIK_DECIMAL         0x53    /* . on numeric keypad */
00552 #define DIK_F11             0x57
00553 #define DIK_F12             0x58
00554 #define DIK_F13             0x64    /*                     (NEC PC98) */
00555 #define DIK_F14             0x65    /*                     (NEC PC98) */
00556 #define DIK_F15             0x66    /*                     (NEC PC98) */
00557 #define DIK_KANA            0x70    /* (Japanese keyboard)            */
00558 #define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
00559 #define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
00560 #define DIK_YEN             0x7D    /* (Japanese keyboard)            */
00561 #define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
00562 #define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
00563 #define DIK_AT              0x91    /*                     (NEC PC98) */
00564 #define DIK_COLON           0x92    /*                     (NEC PC98) */
00565 #define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
00566 #define DIK_KANJI           0x94    /* (Japanese keyboard)            */
00567 #define DIK_STOP            0x95    /*                     (NEC PC98) */
00568 #define DIK_AX              0x96    /*                     (Japan AX) */
00569 #define DIK_UNLABELED       0x97    /*                        (J3100) */
00570 #define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
00571 #define DIK_RCONTROL        0x9D
00572 #define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
00573 #define DIK_DIVIDE          0xB5    /* / on numeric keypad */
00574 #define DIK_SYSRQ           0xB7
00575 #define DIK_RMENU           0xB8    /* right Alt */
00576 #define DIK_PAUSE           0xC5    /* Pause */
00577 #define DIK_HOME            0xC7    /* Home on arrow keypad */
00578 #define DIK_UP              0xC8    /* UpArrow on arrow keypad */
00579 #define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
00580 #define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
00581 #define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
00582 #define DIK_END             0xCF    /* End on arrow keypad */
00583 #define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
00584 #define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
00585 #define DIK_INSERT          0xD2    /* Insert on arrow keypad */
00586 #define DIK_DELETE          0xD3    /* Delete on arrow keypad */
00587 #define DIK_LWIN            0xDB    /* Left Windows key */
00588 #define DIK_RWIN            0xDC    /* Right Windows key */
00589 #define DIK_APPS            0xDD    /* AppMenu key */
00590 #define DIK_POWER           0xDE
00591 #define DIK_SLEEP           0xDF
00592 #define DIK_BACKSPACE       DIK_BACK            /* backspace */
00593 #define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */
00594 #define DIK_LALT            DIK_LMENU           /* left Alt */
00595 #define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */
00596 #define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */
00597 #define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */
00598 #define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */
00599 #define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */
00600 #define DIK_RALT            DIK_RMENU           /* right Alt */
00601 #define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */
00602 #define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */
00603 #define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */
00604 #define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */
00605 #define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */
00606 #define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */
00607 
00608 #define DIDFT_ALL       0x00000000
00609 #define DIDFT_RELAXIS       0x00000001
00610 #define DIDFT_ABSAXIS       0x00000002
00611 #define DIDFT_AXIS      0x00000003
00612 #define DIDFT_PSHBUTTON     0x00000004
00613 #define DIDFT_TGLBUTTON     0x00000008
00614 #define DIDFT_BUTTON        0x0000000C
00615 #define DIDFT_POV       0x00000010
00616 #define DIDFT_COLLECTION    0x00000040
00617 #define DIDFT_NODATA        0x00000080
00618 #define DIDFT_ANYINSTANCE   0x00FFFF00
00619 #define DIDFT_INSTANCEMASK  DIDFT_ANYINSTANCE
00620 #define DIDFT_MAKEINSTANCE(n)   ((WORD)(n) << 8)
00621 #define DIDFT_GETTYPE(n)    LOBYTE(n)
00622 #define DIDFT_GETINSTANCE(n)    LOWORD((n) >> 8)
00623 #define DIDFT_FFACTUATOR    0x01000000
00624 #define DIDFT_FFEFFECTTRIGGER   0x02000000
00625 #define DIDFT_OUTPUT        0x10000000
00626 #define DIDFT_VENDORDEFINED 0x04000000
00627 #define DIDFT_ALIAS     0x08000000
00628 #ifndef DIDFT_OPTIONAL
00629 #define DIDFT_OPTIONAL      0x80000000
00630 #endif
00631 #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
00632 #define DIDFT_NOCOLLECTION  0x00FFFF00
00633 #define DIDF_ABSAXIS        0x00000001
00634 #define DIDF_RELAXIS        0x00000002
00635 
00636 #define DIGDD_PEEK      0x00000001
00637 
00638 typedef struct DIDEVICEOBJECTDATA_DX3 {
00639     DWORD   dwOfs;
00640     DWORD   dwData;
00641     DWORD   dwTimeStamp;
00642     DWORD   dwSequence;
00643 } DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3;
00644 typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3;
00645 
00646 typedef struct DIDEVICEOBJECTDATA {
00647     DWORD   dwOfs;
00648     DWORD   dwData;
00649     DWORD   dwTimeStamp;
00650     DWORD   dwSequence;
00651     UINT_PTR    uAppData;
00652 } DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
00653 typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
00654 
00655 typedef struct _DIOBJECTDATAFORMAT {
00656     const GUID *pguid;
00657     DWORD   dwOfs;
00658     DWORD   dwType;
00659     DWORD   dwFlags;
00660 } DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
00661 typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
00662 
00663 typedef struct _DIDATAFORMAT {
00664     DWORD           dwSize;
00665     DWORD           dwObjSize;
00666     DWORD           dwFlags;
00667     DWORD           dwDataSize;
00668     DWORD           dwNumObjs;
00669     LPDIOBJECTDATAFORMAT    rgodf;
00670 } DIDATAFORMAT, *LPDIDATAFORMAT;
00671 typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
00672 
00673 #define DIDOI_FFACTUATOR    0x00000001
00674 #define DIDOI_FFEFFECTTRIGGER   0x00000002
00675 #define DIDOI_POLLED        0x00008000
00676 #define DIDOI_ASPECTPOSITION    0x00000100
00677 #define DIDOI_ASPECTVELOCITY    0x00000200
00678 #define DIDOI_ASPECTACCEL   0x00000300
00679 #define DIDOI_ASPECTFORCE   0x00000400
00680 #define DIDOI_ASPECTMASK    0x00000F00
00681 #define DIDOI_GUIDISUSAGE   0x00010000
00682 
00683 typedef struct DIPROPHEADER {
00684     DWORD   dwSize;
00685     DWORD   dwHeaderSize;
00686     DWORD   dwObj;
00687     DWORD   dwHow;
00688 } DIPROPHEADER,*LPDIPROPHEADER;
00689 typedef const DIPROPHEADER *LPCDIPROPHEADER;
00690 
00691 #define DIPH_DEVICE 0
00692 #define DIPH_BYOFFSET   1
00693 #define DIPH_BYID   2
00694 #define DIPH_BYUSAGE    3
00695 
00696 #define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage)
00697 
00698 typedef struct DIPROPDWORD {
00699     DIPROPHEADER    diph;
00700     DWORD       dwData;
00701 } DIPROPDWORD, *LPDIPROPDWORD;
00702 typedef const DIPROPDWORD *LPCDIPROPDWORD;
00703 
00704 typedef struct DIPROPRANGE {
00705     DIPROPHEADER    diph;
00706     LONG        lMin;
00707     LONG        lMax;
00708 } DIPROPRANGE, *LPDIPROPRANGE;
00709 typedef const DIPROPRANGE *LPCDIPROPRANGE;
00710 
00711 #define DIPROPRANGE_NOMIN   ((LONG)0x80000000)
00712 #define DIPROPRANGE_NOMAX   ((LONG)0x7FFFFFFF)
00713 
00714 typedef struct DIPROPCAL {
00715     DIPROPHEADER diph;
00716     LONG    lMin;
00717     LONG    lCenter;
00718     LONG    lMax;
00719 } DIPROPCAL, *LPDIPROPCAL;
00720 typedef const DIPROPCAL *LPCDIPROPCAL;
00721 
00722 typedef struct DIPROPGUIDANDPATH {
00723     DIPROPHEADER diph;
00724     GUID    guidClass;
00725     WCHAR   wszPath[MAX_PATH];
00726 } DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;
00727 typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
00728 
00729 typedef struct DIPROPSTRING {
00730     DIPROPHEADER diph;
00731     WCHAR   wsz[MAX_PATH];
00732 } DIPROPSTRING, *LPDIPROPSTRING;
00733 typedef const DIPROPSTRING *LPCDIPROPSTRING;
00734 
00735 /* special property GUIDs */
00736 #ifdef __cplusplus
00737 #define MAKEDIPROP(prop)    (*(const GUID *)(prop))
00738 #else
00739 #define MAKEDIPROP(prop)    ((REFGUID)(prop))
00740 #endif
00741 #define DIPROP_BUFFERSIZE   MAKEDIPROP(1)
00742 #define DIPROP_AXISMODE     MAKEDIPROP(2)
00743 
00744 #define DIPROPAXISMODE_ABS  0
00745 #define DIPROPAXISMODE_REL  1
00746 
00747 #define DIPROP_GRANULARITY  MAKEDIPROP(3)
00748 #define DIPROP_RANGE        MAKEDIPROP(4)
00749 #define DIPROP_DEADZONE     MAKEDIPROP(5)
00750 #define DIPROP_SATURATION   MAKEDIPROP(6)
00751 #define DIPROP_FFGAIN       MAKEDIPROP(7)
00752 #define DIPROP_FFLOAD       MAKEDIPROP(8)
00753 #define DIPROP_AUTOCENTER   MAKEDIPROP(9)
00754 
00755 #define DIPROPAUTOCENTER_OFF    0
00756 #define DIPROPAUTOCENTER_ON 1
00757 
00758 #define DIPROP_CALIBRATIONMODE  MAKEDIPROP(10)
00759 
00760 #define DIPROPCALIBRATIONMODE_COOKED    0
00761 #define DIPROPCALIBRATIONMODE_RAW   1
00762 
00763 #if DIRECTINPUT_VERSION >= 0x050a
00764 #define DIPROP_CALIBRATION  MAKEDIPROP(11)
00765 #define DIPROP_GUIDANDPATH  MAKEDIPROP(12)
00766 #define DIPROP_INSTANCENAME MAKEDIPROP(13)
00767 #define DIPROP_PRODUCTNAME  MAKEDIPROP(14)
00768 #endif
00769 
00770 #if DIRECTINPUT_VERSION >= 0x5B2
00771 #define DIPROP_JOYSTICKID   MAKEDIPROP(15)
00772 #define DIPROP_GETPORTDISPLAYNAME   MAKEDIPROP(16)
00773 #endif
00774 
00775 #if DIRECTINPUT_VERSION >= 0x0700
00776 #define DIPROP_PHYSICALRANGE    MAKEDIPROP(18)
00777 #define DIPROP_LOGICALRANGE MAKEDIPROP(19)
00778 #endif
00779 
00780 #if(DIRECTINPUT_VERSION >= 0x0800)
00781 #define DIPROP_KEYNAME  MAKEDIPROP(20)
00782 #define DIPROP_CPOINTS  MAKEDIPROP(21)
00783 #define DIPROP_APPDATA  MAKEDIPROP(22)
00784 #define DIPROP_SCANCODE MAKEDIPROP(23)
00785 #define DIPROP_VIDPID   MAKEDIPROP(24)
00786 #define DIPROP_USERNAME MAKEDIPROP(25)
00787 #define DIPROP_TYPENAME MAKEDIPROP(26)
00788 #endif
00789 
00790 
00791 typedef struct DIDEVCAPS_DX3 {
00792     DWORD   dwSize;
00793     DWORD   dwFlags;
00794     DWORD   dwDevType;
00795     DWORD   dwAxes;
00796     DWORD   dwButtons;
00797     DWORD   dwPOVs;
00798 } DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
00799 
00800 typedef struct DIDEVCAPS {
00801     DWORD   dwSize;
00802     DWORD   dwFlags;
00803     DWORD   dwDevType;
00804     DWORD   dwAxes;
00805     DWORD   dwButtons;
00806     DWORD   dwPOVs;
00807 #if(DIRECTINPUT_VERSION >= 0x0500)
00808     DWORD   dwFFSamplePeriod;
00809     DWORD   dwFFMinTimeResolution;
00810     DWORD   dwFirmwareRevision;
00811     DWORD   dwHardwareRevision;
00812     DWORD   dwFFDriverVersion;
00813 #endif /* DIRECTINPUT_VERSION >= 0x0500 */
00814 } DIDEVCAPS,*LPDIDEVCAPS;
00815 
00816 #define DIDC_ATTACHED       0x00000001
00817 #define DIDC_POLLEDDEVICE   0x00000002
00818 #define DIDC_EMULATED       0x00000004
00819 #define DIDC_POLLEDDATAFORMAT   0x00000008
00820 #define DIDC_FORCEFEEDBACK  0x00000100
00821 #define DIDC_FFATTACK       0x00000200
00822 #define DIDC_FFFADE     0x00000400
00823 #define DIDC_SATURATION     0x00000800
00824 #define DIDC_POSNEGCOEFFICIENTS 0x00001000
00825 #define DIDC_POSNEGSATURATION   0x00002000
00826 #define DIDC_DEADBAND       0x00004000
00827 #define DIDC_STARTDELAY     0x00008000
00828 #define DIDC_ALIAS      0x00010000
00829 #define DIDC_PHANTOM        0x00020000
00830 #define DIDC_HIDDEN     0x00040000
00831 
00832 
00833 /* SetCooperativeLevel dwFlags */
00834 #define DISCL_EXCLUSIVE     0x00000001
00835 #define DISCL_NONEXCLUSIVE  0x00000002
00836 #define DISCL_FOREGROUND    0x00000004
00837 #define DISCL_BACKGROUND    0x00000008
00838 #define DISCL_NOWINKEY      0x00000010
00839 
00840 /* Device FF flags */
00841 #define DISFFC_RESET        0x00000001
00842 
00843 #define DIEFT_ALL       0x00000000
00844 
00845 #define DIEFT_CONSTANTFORCE 0x00000001
00846 #define DIEFT_RAMPFORCE     0x00000002
00847 #define DIEFT_PERIODIC      0x00000003
00848 #define DIEFT_CONDITION     0x00000004
00849 #define DIEFT_CUSTOMFORCE   0x00000005
00850 #define DIEFT_HARDWARE      0x000000FF
00851 #define DIEFT_FFATTACK      0x00000200
00852 #define DIEFT_FFFADE        0x00000400
00853 #define DIEFT_SATURATION    0x00000800
00854 #define DIEFT_POSNEGCOEFFICIENTS 0x00001000
00855 #define DIEFT_POSNEGSATURATION  0x00002000
00856 #define DIEFT_DEADBAND      0x00004000
00857 #define DIEFT_STARTDELAY    0x00008000
00858 #define DIEFT_GETTYPE(n)    LOBYTE(n)
00859 
00860 #define DI_DEGREES      100
00861 #define DI_FFNOMINALMAX     10000
00862 #define DI_SECONDS      1000000
00863 
00864 typedef struct DICONSTANTFORCE {
00865     LONG            lMagnitude;
00866 } DICONSTANTFORCE, *LPDICONSTANTFORCE;
00867 typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
00868 
00869 typedef struct DIRAMPFORCE {
00870     LONG            lStart;
00871     LONG            lEnd;
00872 } DIRAMPFORCE, *LPDIRAMPFORCE;
00873 typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
00874 
00875 typedef struct DIPERIODIC {
00876     DWORD           dwMagnitude;
00877     LONG            lOffset;
00878     DWORD           dwPhase;
00879     DWORD           dwPeriod;
00880 } DIPERIODIC, *LPDIPERIODIC;
00881 typedef const DIPERIODIC *LPCDIPERIODIC;
00882 
00883 typedef struct DICONDITION {
00884     LONG            lOffset;
00885     LONG            lPositiveCoefficient;
00886     LONG            lNegativeCoefficient;
00887     DWORD           dwPositiveSaturation;
00888     DWORD           dwNegativeSaturation;
00889     LONG            lDeadBand;
00890 } DICONDITION, *LPDICONDITION;
00891 typedef const DICONDITION *LPCDICONDITION;
00892 
00893 typedef struct DICUSTOMFORCE {
00894     DWORD           cChannels;
00895     DWORD           dwSamplePeriod;
00896     DWORD           cSamples;
00897     LPLONG          rglForceData;
00898 } DICUSTOMFORCE, *LPDICUSTOMFORCE;
00899 typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
00900 
00901 typedef struct DIENVELOPE {
00902     DWORD           dwSize;
00903     DWORD           dwAttackLevel;
00904     DWORD           dwAttackTime;
00905     DWORD           dwFadeLevel;
00906     DWORD           dwFadeTime;
00907 } DIENVELOPE, *LPDIENVELOPE;
00908 typedef const DIENVELOPE *LPCDIENVELOPE;
00909 
00910 typedef struct DIEFFECT_DX5 {
00911     DWORD           dwSize;
00912     DWORD           dwFlags;
00913     DWORD           dwDuration;
00914     DWORD           dwSamplePeriod;
00915     DWORD           dwGain;
00916     DWORD           dwTriggerButton;
00917     DWORD           dwTriggerRepeatInterval;
00918     DWORD           cAxes;
00919     LPDWORD         rgdwAxes;
00920     LPLONG          rglDirection;
00921     LPDIENVELOPE        lpEnvelope;
00922     DWORD           cbTypeSpecificParams;
00923     LPVOID          lpvTypeSpecificParams;
00924 } DIEFFECT_DX5, *LPDIEFFECT_DX5;
00925 typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;
00926 
00927 typedef struct DIEFFECT {
00928     DWORD           dwSize;
00929     DWORD           dwFlags;
00930     DWORD           dwDuration;
00931     DWORD           dwSamplePeriod;
00932     DWORD           dwGain;
00933     DWORD           dwTriggerButton;
00934     DWORD           dwTriggerRepeatInterval;
00935     DWORD           cAxes;
00936     LPDWORD         rgdwAxes;
00937     LPLONG          rglDirection;
00938     LPDIENVELOPE        lpEnvelope;
00939     DWORD           cbTypeSpecificParams;
00940     LPVOID          lpvTypeSpecificParams;
00941     DWORD           dwStartDelay;
00942 } DIEFFECT, *LPDIEFFECT;
00943 typedef const DIEFFECT *LPCDIEFFECT;
00944 typedef DIEFFECT DIEFFECT_DX6;
00945 typedef LPDIEFFECT LPDIEFFECT_DX6;
00946 
00947 typedef struct DIEFFECTINFOA {
00948     DWORD           dwSize;
00949     GUID            guid;
00950     DWORD           dwEffType;
00951     DWORD           dwStaticParams;
00952     DWORD           dwDynamicParams;
00953     CHAR            tszName[MAX_PATH];
00954 } DIEFFECTINFOA, *LPDIEFFECTINFOA;
00955 typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
00956 
00957 typedef struct DIEFFECTINFOW {
00958     DWORD           dwSize;
00959     GUID            guid;
00960     DWORD           dwEffType;
00961     DWORD           dwStaticParams;
00962     DWORD           dwDynamicParams;
00963     WCHAR           tszName[MAX_PATH];
00964 } DIEFFECTINFOW, *LPDIEFFECTINFOW;
00965 typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
00966 
00967 DECL_WINELIB_TYPE_AW(DIEFFECTINFO)
00968 DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO)
00969 DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO)
00970 
00971 typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
00972 typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
00973 
00974 typedef struct DIEFFESCAPE {
00975     DWORD   dwSize;
00976     DWORD   dwCommand;
00977     LPVOID  lpvInBuffer;
00978     DWORD   cbInBuffer;
00979     LPVOID  lpvOutBuffer;
00980     DWORD   cbOutBuffer;
00981 } DIEFFESCAPE, *LPDIEFFESCAPE;
00982 
00983 typedef struct DIJOYSTATE {
00984     LONG    lX;
00985     LONG    lY;
00986     LONG    lZ;
00987     LONG    lRx;
00988     LONG    lRy;
00989     LONG    lRz;
00990     LONG    rglSlider[2];
00991     DWORD   rgdwPOV[4];
00992     BYTE    rgbButtons[32];
00993 } DIJOYSTATE, *LPDIJOYSTATE;
00994 
00995 typedef struct DIJOYSTATE2 {
00996     LONG    lX;
00997     LONG    lY;
00998     LONG    lZ;
00999     LONG    lRx;
01000     LONG    lRy;
01001     LONG    lRz;
01002     LONG    rglSlider[2];
01003     DWORD   rgdwPOV[4];
01004     BYTE    rgbButtons[128];
01005     LONG    lVX;        /* 'v' as in velocity */
01006     LONG    lVY;
01007     LONG    lVZ;
01008     LONG    lVRx;
01009     LONG    lVRy;
01010     LONG    lVRz;
01011     LONG    rglVSlider[2];
01012     LONG    lAX;        /* 'a' as in acceleration */
01013     LONG    lAY;
01014     LONG    lAZ;
01015     LONG    lARx;
01016     LONG    lARy;
01017     LONG    lARz;
01018     LONG    rglASlider[2];
01019     LONG    lFX;        /* 'f' as in force */
01020     LONG    lFY;
01021     LONG    lFZ;
01022     LONG    lFRx;       /* 'fr' as in rotational force aka torque */
01023     LONG    lFRy;
01024     LONG    lFRz;
01025     LONG    rglFSlider[2];
01026 } DIJOYSTATE2, *LPDIJOYSTATE2;
01027 
01028 #define DIJOFS_X        FIELD_OFFSET(DIJOYSTATE, lX)
01029 #define DIJOFS_Y        FIELD_OFFSET(DIJOYSTATE, lY)
01030 #define DIJOFS_Z        FIELD_OFFSET(DIJOYSTATE, lZ)
01031 #define DIJOFS_RX       FIELD_OFFSET(DIJOYSTATE, lRx)
01032 #define DIJOFS_RY       FIELD_OFFSET(DIJOYSTATE, lRy)
01033 #define DIJOFS_RZ       FIELD_OFFSET(DIJOYSTATE, lRz)
01034 #define DIJOFS_SLIDER(n)    (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
01035                                                         (n) * sizeof(LONG))
01036 #define DIJOFS_POV(n)       (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
01037                                                         (n) * sizeof(DWORD))
01038 #define DIJOFS_BUTTON(n)    (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
01039 #define DIJOFS_BUTTON0      DIJOFS_BUTTON(0)
01040 #define DIJOFS_BUTTON1      DIJOFS_BUTTON(1)
01041 #define DIJOFS_BUTTON2      DIJOFS_BUTTON(2)
01042 #define DIJOFS_BUTTON3      DIJOFS_BUTTON(3)
01043 #define DIJOFS_BUTTON4      DIJOFS_BUTTON(4)
01044 #define DIJOFS_BUTTON5      DIJOFS_BUTTON(5)
01045 #define DIJOFS_BUTTON6      DIJOFS_BUTTON(6)
01046 #define DIJOFS_BUTTON7      DIJOFS_BUTTON(7)
01047 #define DIJOFS_BUTTON8      DIJOFS_BUTTON(8)
01048 #define DIJOFS_BUTTON9      DIJOFS_BUTTON(9)
01049 #define DIJOFS_BUTTON10     DIJOFS_BUTTON(10)
01050 #define DIJOFS_BUTTON11     DIJOFS_BUTTON(11)
01051 #define DIJOFS_BUTTON12     DIJOFS_BUTTON(12)
01052 #define DIJOFS_BUTTON13     DIJOFS_BUTTON(13)
01053 #define DIJOFS_BUTTON14     DIJOFS_BUTTON(14)
01054 #define DIJOFS_BUTTON15     DIJOFS_BUTTON(15)
01055 #define DIJOFS_BUTTON16     DIJOFS_BUTTON(16)
01056 #define DIJOFS_BUTTON17     DIJOFS_BUTTON(17)
01057 #define DIJOFS_BUTTON18     DIJOFS_BUTTON(18)
01058 #define DIJOFS_BUTTON19     DIJOFS_BUTTON(19)
01059 #define DIJOFS_BUTTON20     DIJOFS_BUTTON(20)
01060 #define DIJOFS_BUTTON21     DIJOFS_BUTTON(21)
01061 #define DIJOFS_BUTTON22     DIJOFS_BUTTON(22)
01062 #define DIJOFS_BUTTON23     DIJOFS_BUTTON(23)
01063 #define DIJOFS_BUTTON24     DIJOFS_BUTTON(24)
01064 #define DIJOFS_BUTTON25     DIJOFS_BUTTON(25)
01065 #define DIJOFS_BUTTON26     DIJOFS_BUTTON(26)
01066 #define DIJOFS_BUTTON27     DIJOFS_BUTTON(27)
01067 #define DIJOFS_BUTTON28     DIJOFS_BUTTON(28)
01068 #define DIJOFS_BUTTON29     DIJOFS_BUTTON(29)
01069 #define DIJOFS_BUTTON30     DIJOFS_BUTTON(30)
01070 #define DIJOFS_BUTTON31     DIJOFS_BUTTON(31)
01071 
01072 /* DInput 7 structures, types */
01073 typedef struct DIFILEEFFECT {
01074   DWORD       dwSize;
01075   GUID        GuidEffect;
01076   LPCDIEFFECT lpDiEffect;
01077   CHAR        szFriendlyName[MAX_PATH];
01078 } DIFILEEFFECT, *LPDIFILEEFFECT;
01079 
01080 typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
01081 typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);
01082 
01083 /* DInput 8 structures and types */
01084 #if DIRECTINPUT_VERSION >= 0x0800
01085 typedef struct _DIACTIONA {
01086     UINT_PTR    uAppData;
01087     DWORD       dwSemantics;
01088     DWORD       dwFlags;
01089     union {
01090         LPCSTR  lptszActionName;
01091         UINT    uResIdString;
01092     } DUMMYUNIONNAME;
01093     GUID        guidInstance;
01094     DWORD       dwObjID;
01095     DWORD       dwHow;
01096 } DIACTIONA, *LPDIACTIONA;
01097 typedef const DIACTIONA *LPCDIACTIONA;
01098 
01099 typedef struct _DIACTIONW {
01100     UINT_PTR    uAppData;
01101     DWORD       dwSemantics;
01102     DWORD       dwFlags;
01103     union {
01104         LPCWSTR lptszActionName;
01105         UINT    uResIdString;
01106     } DUMMYUNIONNAME;
01107     GUID        guidInstance;
01108     DWORD       dwObjID;
01109     DWORD       dwHow;
01110 } DIACTIONW, *LPDIACTIONW;
01111 typedef const DIACTIONW *LPCDIACTIONW;
01112 
01113 DECL_WINELIB_TYPE_AW(DIACTION)
01114 DECL_WINELIB_TYPE_AW(LPDIACTION)
01115 DECL_WINELIB_TYPE_AW(LPCDIACTION)
01116 
01117 #define DIA_FORCEFEEDBACK   0x00000001
01118 #define DIA_APPMAPPED       0x00000002
01119 #define DIA_APPNOMAP        0x00000004
01120 #define DIA_NORANGE     0x00000008
01121 #define DIA_APPFIXED        0x00000010
01122 
01123 #define DIAH_UNMAPPED       0x00000000
01124 #define DIAH_USERCONFIG     0x00000001
01125 #define DIAH_APPREQUESTED   0x00000002
01126 #define DIAH_HWAPP      0x00000004
01127 #define DIAH_HWDEFAULT      0x00000008
01128 #define DIAH_DEFAULT        0x00000020
01129 #define DIAH_ERROR      0x80000000
01130 
01131 typedef struct _DIACTIONFORMATA {
01132     DWORD       dwSize;
01133     DWORD       dwActionSize;
01134     DWORD       dwDataSize;
01135     DWORD       dwNumActions;
01136     LPDIACTIONA rgoAction;
01137     GUID        guidActionMap;
01138     DWORD       dwGenre;
01139     DWORD       dwBufferSize;
01140     LONG        lAxisMin;
01141     LONG        lAxisMax;
01142     HINSTANCE   hInstString;
01143     FILETIME    ftTimeStamp;
01144     DWORD       dwCRC;
01145     CHAR        tszActionMap[MAX_PATH];
01146 } DIACTIONFORMATA, *LPDIACTIONFORMATA;
01147 typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;
01148 
01149 typedef struct _DIACTIONFORMATW {
01150     DWORD       dwSize;
01151     DWORD       dwActionSize;
01152     DWORD       dwDataSize;
01153     DWORD       dwNumActions;
01154     LPDIACTIONW rgoAction;
01155     GUID        guidActionMap;
01156     DWORD       dwGenre;
01157     DWORD       dwBufferSize;
01158     LONG        lAxisMin;
01159     LONG        lAxisMax;
01160     HINSTANCE   hInstString;
01161     FILETIME    ftTimeStamp;
01162     DWORD       dwCRC;
01163     WCHAR       tszActionMap[MAX_PATH];
01164 } DIACTIONFORMATW, *LPDIACTIONFORMATW;
01165 typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;
01166 
01167 DECL_WINELIB_TYPE_AW(DIACTIONFORMAT)
01168 DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT)
01169 DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT)
01170 
01171 #define DIAFTS_NEWDEVICELOW 0xFFFFFFFF
01172 #define DIAFTS_NEWDEVICEHIGH    0xFFFFFFFF
01173 #define DIAFTS_UNUSEDDEVICELOW  0x00000000
01174 #define DIAFTS_UNUSEDDEVICEHIGH 0x00000000
01175 
01176 #define DIDBAM_DEFAULT      0x00000000
01177 #define DIDBAM_PRESERVE     0x00000001
01178 #define DIDBAM_INITIALIZE   0x00000002
01179 #define DIDBAM_HWDEFAULTS   0x00000004
01180 
01181 #define DIDSAM_DEFAULT      0x00000000
01182 #define DIDSAM_NOUSER       0x00000001
01183 #define DIDSAM_FORCESAVE    0x00000002
01184 
01185 #define DICD_DEFAULT        0x00000000
01186 #define DICD_EDIT       0x00000001
01187 
01188 #ifndef D3DCOLOR_DEFINED
01189 typedef DWORD D3DCOLOR;
01190 #define D3DCOLOR_DEFINED
01191 #endif
01192 
01193 typedef struct _DICOLORSET {
01194     DWORD       dwSize;
01195     D3DCOLOR    cTextFore;
01196     D3DCOLOR    cTextHighlight;
01197     D3DCOLOR    cCalloutLine;
01198     D3DCOLOR    cCalloutHighlight;
01199     D3DCOLOR    cBorder;
01200     D3DCOLOR    cControlFill;
01201     D3DCOLOR    cHighlightFill;
01202     D3DCOLOR    cAreaFill;
01203 } DICOLORSET, *LPDICOLORSET;
01204 typedef const DICOLORSET *LPCDICOLORSET;
01205 
01206 typedef struct _DICONFIGUREDEVICESPARAMSA {
01207     DWORD           dwSize;
01208     DWORD           dwcUsers;
01209     LPSTR           lptszUserNames;
01210     DWORD           dwcFormats;
01211     LPDIACTIONFORMATA   lprgFormats;
01212     HWND            hwnd;
01213     DICOLORSET      dics;
01214     LPUNKNOWN       lpUnkDDSTarget;
01215 } DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA;
01216 typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;
01217 
01218 typedef struct _DICONFIGUREDEVICESPARAMSW {
01219     DWORD           dwSize;
01220     DWORD           dwcUsers;
01221     LPWSTR          lptszUserNames;
01222     DWORD           dwcFormats;
01223     LPDIACTIONFORMATW   lprgFormats;
01224     HWND            hwnd;
01225     DICOLORSET      dics;
01226     LPUNKNOWN       lpUnkDDSTarget;
01227 } DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW;
01228 typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;
01229 
01230 DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS)
01231 DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS)
01232 DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS)
01233 
01234 #define DIDIFT_CONFIGURATION    0x00000001
01235 #define DIDIFT_OVERLAY      0x00000002
01236 
01237 #define DIDAL_CENTERED      0x00000000
01238 #define DIDAL_LEFTALIGNED   0x00000001
01239 #define DIDAL_RIGHTALIGNED  0x00000002
01240 #define DIDAL_MIDDLE        0x00000000
01241 #define DIDAL_TOPALIGNED    0x00000004
01242 #define DIDAL_BOTTOMALIGNED 0x00000008
01243 
01244 typedef struct _DIDEVICEIMAGEINFOA {
01245     CHAR    tszImagePath[MAX_PATH];
01246     DWORD   dwFlags;
01247     DWORD   dwViewID;
01248     RECT    rcOverlay;
01249     DWORD   dwObjID;
01250     DWORD   dwcValidPts;
01251     POINT   rgptCalloutLine[5];
01252     RECT    rcCalloutRect;
01253     DWORD   dwTextAlign;
01254 } DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA;
01255 typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;
01256 
01257 typedef struct _DIDEVICEIMAGEINFOW {
01258     WCHAR   tszImagePath[MAX_PATH];
01259     DWORD   dwFlags;
01260     DWORD   dwViewID;
01261     RECT    rcOverlay;
01262     DWORD   dwObjID;
01263     DWORD   dwcValidPts;
01264     POINT   rgptCalloutLine[5];
01265     RECT    rcCalloutRect;
01266     DWORD   dwTextAlign;
01267 } DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW;
01268 typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;
01269 
01270 DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO)
01271 DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO)
01272 DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO)
01273 
01274 typedef struct _DIDEVICEIMAGEINFOHEADERA {
01275     DWORD   dwSize;
01276     DWORD   dwSizeImageInfo;
01277     DWORD   dwcViews;
01278     DWORD   dwcButtons;
01279     DWORD   dwcAxes;
01280     DWORD   dwcPOVs;
01281     DWORD   dwBufferSize;
01282     DWORD   dwBufferUsed;
01283     LPDIDEVICEIMAGEINFOA    lprgImageInfoArray;
01284 } DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA;
01285 typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;
01286 
01287 typedef struct _DIDEVICEIMAGEINFOHEADERW {
01288     DWORD   dwSize;
01289     DWORD   dwSizeImageInfo;
01290     DWORD   dwcViews;
01291     DWORD   dwcButtons;
01292     DWORD   dwcAxes;
01293     DWORD   dwcPOVs;
01294     DWORD   dwBufferSize;
01295     DWORD   dwBufferUsed;
01296     LPDIDEVICEIMAGEINFOW    lprgImageInfoArray;
01297 } DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW;
01298 typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;
01299 
01300 DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER)
01301 DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER)
01302 DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER)
01303 
01304 #endif /* DI8 */
01305 
01306 
01307 /*****************************************************************************
01308  * IDirectInputEffect interface
01309  */
01310 #define INTERFACE IDirectInputEffect
01311 DECLARE_INTERFACE_(IDirectInputEffect,IUnknown)
01312 {
01313     /*** IUnknown methods ***/
01314     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01315     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01316     STDMETHOD_(ULONG,Release)(THIS) PURE;
01317     /*** IDirectInputEffect methods ***/
01318     STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE;
01319     STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
01320     STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE;
01321     STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE;
01322     STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE;
01323     STDMETHOD(Stop)(THIS) PURE;
01324     STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
01325     STDMETHOD(Download)(THIS) PURE;
01326     STDMETHOD(Unload)(THIS) PURE;
01327     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
01328 };
01329 #undef INTERFACE
01330 
01331 #if !defined(__cplusplus) || defined(CINTERFACE)
01332 /*** IUnknown methods ***/
01333 #define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01334 #define IDirectInputEffect_AddRef(p)             (p)->lpVtbl->AddRef(p)
01335 #define IDirectInputEffect_Release(p)            (p)->lpVtbl->Release(p)
01336 /*** IDirectInputEffect methods ***/
01337 #define IDirectInputEffect_Initialize(p,a,b,c)    (p)->lpVtbl->Initialize(p,a,b,c)
01338 #define IDirectInputEffect_GetEffectGuid(p,a)     (p)->lpVtbl->GetEffectGuid(p,a)
01339 #define IDirectInputEffect_GetParameters(p,a,b)   (p)->lpVtbl->GetParameters(p,a,b)
01340 #define IDirectInputEffect_SetParameters(p,a,b)   (p)->lpVtbl->SetParameters(p,a,b)
01341 #define IDirectInputEffect_Start(p,a,b)           (p)->lpVtbl->Start(p,a,b)
01342 #define IDirectInputEffect_Stop(p)                (p)->lpVtbl->Stop(p)
01343 #define IDirectInputEffect_GetEffectStatus(p,a,b) (p)->lpVtbl->GetEffectStatus(p,a)
01344 #define IDirectInputEffect_Download(p)            (p)->lpVtbl->Download(p)
01345 #define IDirectInputEffect_Unload(p)              (p)->lpVtbl->Unload(p)
01346 #define IDirectInputEffect_Escape(p,a)            (p)->lpVtbl->Escape(p,a)
01347 #else
01348 /*** IUnknown methods ***/
01349 #define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01350 #define IDirectInputEffect_AddRef(p)             (p)->AddRef()
01351 #define IDirectInputEffect_Release(p)            (p)->Release()
01352 /*** IDirectInputEffect methods ***/
01353 #define IDirectInputEffect_Initialize(p,a,b,c)    (p)->Initialize(a,b,c)
01354 #define IDirectInputEffect_GetEffectGuid(p,a)     (p)->GetEffectGuid(a)
01355 #define IDirectInputEffect_GetParameters(p,a,b)   (p)->GetParameters(a,b)
01356 #define IDirectInputEffect_SetParameters(p,a,b)   (p)->SetParameters(a,b)
01357 #define IDirectInputEffect_Start(p,a,b)           (p)->Start(a,b)
01358 #define IDirectInputEffect_Stop(p)                (p)->Stop()
01359 #define IDirectInputEffect_GetEffectStatus(p,a,b) (p)->GetEffectStatus(a)
01360 #define IDirectInputEffect_Download(p)            (p)->Download()
01361 #define IDirectInputEffect_Unload(p)              (p)->Unload()
01362 #define IDirectInputEffect_Escape(p,a)            (p)->Escape(a)
01363 #endif
01364 
01365 
01366 /*****************************************************************************
01367  * IDirectInputDeviceA interface
01368  */
01369 #define INTERFACE IDirectInputDeviceA
01370 DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown)
01371 {
01372     /*** IUnknown methods ***/
01373     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01374     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01375     STDMETHOD_(ULONG,Release)(THIS) PURE;
01376     /*** IDirectInputDeviceA methods ***/
01377     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01378     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01379     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01380     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01381     STDMETHOD(Acquire)(THIS) PURE;
01382     STDMETHOD(Unacquire)(THIS) PURE;
01383     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01384     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01385     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01386     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01387     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01388     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01389     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
01390     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01391     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01392 };
01393 #undef INTERFACE
01394 
01395 /*****************************************************************************
01396  * IDirectInputDeviceW interface
01397  */
01398 #define INTERFACE IDirectInputDeviceW
01399 DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown)
01400 {
01401     /*** IUnknown methods ***/
01402     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01403     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01404     STDMETHOD_(ULONG,Release)(THIS) PURE;
01405     /*** IDirectInputDeviceW methods ***/
01406     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01407     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01408     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01409     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01410     STDMETHOD(Acquire)(THIS) PURE;
01411     STDMETHOD(Unacquire)(THIS) PURE;
01412     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01413     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01414     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01415     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01416     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01417     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01418     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
01419     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01420     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01421 };
01422 #undef INTERFACE
01423 
01424 #if !defined(__cplusplus) || defined(CINTERFACE)
01425 /*** IUnknown methods ***/
01426 #define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01427 #define IDirectInputDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
01428 #define IDirectInputDevice_Release(p)            (p)->lpVtbl->Release(p)
01429 /*** IDirectInputDevice methods ***/
01430 #define IDirectInputDevice_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
01431 #define IDirectInputDevice_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
01432 #define IDirectInputDevice_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
01433 #define IDirectInputDevice_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
01434 #define IDirectInputDevice_Acquire(p)                 (p)->lpVtbl->Acquire(p)
01435 #define IDirectInputDevice_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
01436 #define IDirectInputDevice_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
01437 #define IDirectInputDevice_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
01438 #define IDirectInputDevice_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
01439 #define IDirectInputDevice_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
01440 #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
01441 #define IDirectInputDevice_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
01442 #define IDirectInputDevice_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
01443 #define IDirectInputDevice_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
01444 #define IDirectInputDevice_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
01445 #else
01446 /*** IUnknown methods ***/
01447 #define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01448 #define IDirectInputDevice_AddRef(p)             (p)->AddRef()
01449 #define IDirectInputDevice_Release(p)            (p)->Release()
01450 /*** IDirectInputDevice methods ***/
01451 #define IDirectInputDevice_GetCapabilities(p,a)       (p)->GetCapabilities(a)
01452 #define IDirectInputDevice_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
01453 #define IDirectInputDevice_GetProperty(p,a,b)         (p)->GetProperty(a,b)
01454 #define IDirectInputDevice_SetProperty(p,a,b)         (p)->SetProperty(a,b)
01455 #define IDirectInputDevice_Acquire(p)                 (p)->Acquire()
01456 #define IDirectInputDevice_Unacquire(p)               (p)->Unacquire()
01457 #define IDirectInputDevice_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
01458 #define IDirectInputDevice_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
01459 #define IDirectInputDevice_SetDataFormat(p,a)         (p)->SetDataFormat(a)
01460 #define IDirectInputDevice_SetEventNotification(p,a)  (p)->SetEventNotification(a)
01461 #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
01462 #define IDirectInputDevice_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
01463 #define IDirectInputDevice_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
01464 #define IDirectInputDevice_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
01465 #define IDirectInputDevice_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
01466 #endif
01467 
01468 
01469 /*****************************************************************************
01470  * IDirectInputDevice2A interface
01471  */
01472 #define INTERFACE IDirectInputDevice2A
01473 DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA)
01474 {
01475     /*** IUnknown methods ***/
01476     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01477     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01478     STDMETHOD_(ULONG,Release)(THIS) PURE;
01479     /*** IDirectInputDeviceA methods ***/
01480     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01481     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01482     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01483     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01484     STDMETHOD(Acquire)(THIS) PURE;
01485     STDMETHOD(Unacquire)(THIS) PURE;
01486     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01487     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01488     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01489     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01490     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01491     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01492     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
01493     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01494     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01495     /*** IDirectInputDevice2A methods ***/
01496     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01497     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01498     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
01499     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01500     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01501     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01502     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01503     STDMETHOD(Poll)(THIS) PURE;
01504     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01505 };
01506 #undef INTERFACE
01507 
01508 /*****************************************************************************
01509  * IDirectInputDevice2W interface
01510  */
01511 #define INTERFACE IDirectInputDevice2W
01512 DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW)
01513 {
01514     /*** IUnknown methods ***/
01515     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01516     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01517     STDMETHOD_(ULONG,Release)(THIS) PURE;
01518     /*** IDirectInputDeviceW methods ***/
01519     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01520     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01521     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01522     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01523     STDMETHOD(Acquire)(THIS) PURE;
01524     STDMETHOD(Unacquire)(THIS) PURE;
01525     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01526     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01527     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01528     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01529     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01530     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01531     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
01532     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01533     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01534     /*** IDirectInputDevice2W methods ***/
01535     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01536     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01537     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
01538     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01539     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01540     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01541     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01542     STDMETHOD(Poll)(THIS) PURE;
01543     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01544 };
01545 #undef INTERFACE
01546 
01547 #if !defined(__cplusplus) || defined(CINTERFACE)
01548 /*** IUnknown methods ***/
01549 #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01550 #define IDirectInputDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
01551 #define IDirectInputDevice2_Release(p)            (p)->lpVtbl->Release(p)
01552 /*** IDirectInputDevice methods ***/
01553 #define IDirectInputDevice2_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
01554 #define IDirectInputDevice2_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
01555 #define IDirectInputDevice2_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
01556 #define IDirectInputDevice2_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
01557 #define IDirectInputDevice2_Acquire(p)                 (p)->lpVtbl->Acquire(p)
01558 #define IDirectInputDevice2_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
01559 #define IDirectInputDevice2_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
01560 #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
01561 #define IDirectInputDevice2_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
01562 #define IDirectInputDevice2_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
01563 #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
01564 #define IDirectInputDevice2_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
01565 #define IDirectInputDevice2_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
01566 #define IDirectInputDevice2_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
01567 #define IDirectInputDevice2_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
01568 /*** IDirectInputDevice2 methods ***/
01569 #define IDirectInputDevice2_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
01570 #define IDirectInputDevice2_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
01571 #define IDirectInputDevice2_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
01572 #define IDirectInputDevice2_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
01573 #define IDirectInputDevice2_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
01574 #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
01575 #define IDirectInputDevice2_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
01576 #define IDirectInputDevice2_Poll(p)                           (p)->lpVtbl->Poll(p)
01577 #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
01578 #else
01579 /*** IUnknown methods ***/
01580 #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01581 #define IDirectInputDevice2_AddRef(p)             (p)->AddRef()
01582 #define IDirectInputDevice2_Release(p)            (p)->Release()
01583 /*** IDirectInputDevice methods ***/
01584 #define IDirectInputDevice2_GetCapabilities(p,a)       (p)->GetCapabilities(a)
01585 #define IDirectInputDevice2_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
01586 #define IDirectInputDevice2_GetProperty(p,a,b)         (p)->GetProperty(a,b)
01587 #define IDirectInputDevice2_SetProperty(p,a,b)         (p)->SetProperty(a,b)
01588 #define IDirectInputDevice2_Acquire(p)                 (p)->Acquire()
01589 #define IDirectInputDevice2_Unacquire(p)               (p)->Unacquire()
01590 #define IDirectInputDevice2_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
01591 #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
01592 #define IDirectInputDevice2_SetDataFormat(p,a)         (p)->SetDataFormat(a)
01593 #define IDirectInputDevice2_SetEventNotification(p,a)  (p)->SetEventNotification(a)
01594 #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
01595 #define IDirectInputDevice2_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
01596 #define IDirectInputDevice2_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
01597 #define IDirectInputDevice2_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
01598 #define IDirectInputDevice2_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
01599 /*** IDirectInputDevice2 methods ***/
01600 #define IDirectInputDevice2_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
01601 #define IDirectInputDevice2_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
01602 #define IDirectInputDevice2_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
01603 #define IDirectInputDevice2_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
01604 #define IDirectInputDevice2_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
01605 #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
01606 #define IDirectInputDevice2_Escape(p,a)                       (p)->Escape(a)
01607 #define IDirectInputDevice2_Poll(p)                           (p)->Poll()
01608 #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
01609 #endif
01610 
01611 #if DIRECTINPUT_VERSION >= 0x0700
01612 /*****************************************************************************
01613  * IDirectInputDevice7A interface
01614  */
01615 #define INTERFACE IDirectInputDevice7A
01616 DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A)
01617 {
01618     /*** IUnknown methods ***/
01619     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01620     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01621     STDMETHOD_(ULONG,Release)(THIS) PURE;
01622     /*** IDirectInputDeviceA methods ***/
01623     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01624     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01625     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01626     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01627     STDMETHOD(Acquire)(THIS) PURE;
01628     STDMETHOD(Unacquire)(THIS) PURE;
01629     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01630     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01631     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01632     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01633     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01634     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01635     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
01636     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01637     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01638     /*** IDirectInputDevice2A methods ***/
01639     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01640     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01641     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
01642     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01643     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01644     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01645     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01646     STDMETHOD(Poll)(THIS) PURE;
01647     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01648     /*** IDirectInputDevice7A methods ***/
01649     STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
01650     STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
01651 };
01652 #undef INTERFACE
01653 
01654 /*****************************************************************************
01655  * IDirectInputDevice7W interface
01656  */
01657 #define INTERFACE IDirectInputDevice7W
01658 DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W)
01659 {
01660     /*** IUnknown methods ***/
01661     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01662     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01663     STDMETHOD_(ULONG,Release)(THIS) PURE;
01664     /*** IDirectInputDeviceW methods ***/
01665     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01666     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01667     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01668     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01669     STDMETHOD(Acquire)(THIS) PURE;
01670     STDMETHOD(Unacquire)(THIS) PURE;
01671     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01672     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01673     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01674     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01675     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01676     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01677     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
01678     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01679     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01680     /*** IDirectInputDevice2W methods ***/
01681     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01682     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01683     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
01684     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01685     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01686     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01687     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01688     STDMETHOD(Poll)(THIS) PURE;
01689     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01690     /*** IDirectInputDevice7W methods ***/
01691     STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
01692     STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
01693 };
01694 #undef INTERFACE
01695 
01696 #if !defined(__cplusplus) || defined(CINTERFACE)
01697 /*** IUnknown methods ***/
01698 #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01699 #define IDirectInputDevice7_AddRef(p)             (p)->lpVtbl->AddRef(p)
01700 #define IDirectInputDevice7_Release(p)            (p)->lpVtbl->Release(p)
01701 /*** IDirectInputDevice methods ***/
01702 #define IDirectInputDevice7_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
01703 #define IDirectInputDevice7_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
01704 #define IDirectInputDevice7_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
01705 #define IDirectInputDevice7_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
01706 #define IDirectInputDevice7_Acquire(p)                 (p)->lpVtbl->Acquire(p)
01707 #define IDirectInputDevice7_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
01708 #define IDirectInputDevice7_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
01709 #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
01710 #define IDirectInputDevice7_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
01711 #define IDirectInputDevice7_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
01712 #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
01713 #define IDirectInputDevice7_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
01714 #define IDirectInputDevice7_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
01715 #define IDirectInputDevice7_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
01716 #define IDirectInputDevice7_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
01717 /*** IDirectInputDevice2 methods ***/
01718 #define IDirectInputDevice7_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
01719 #define IDirectInputDevice7_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
01720 #define IDirectInputDevice7_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
01721 #define IDirectInputDevice7_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
01722 #define IDirectInputDevice7_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
01723 #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
01724 #define IDirectInputDevice7_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
01725 #define IDirectInputDevice7_Poll(p)                           (p)->lpVtbl->Poll(p)
01726 #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
01727 /*** IDirectInputDevice7 methods ***/
01728 #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
01729 #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
01730 #else
01731 /*** IUnknown methods ***/
01732 #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01733 #define IDirectInputDevice7_AddRef(p)             (p)->AddRef()
01734 #define IDirectInputDevice7_Release(p)            (p)->Release()
01735 /*** IDirectInputDevice methods ***/
01736 #define IDirectInputDevice7_GetCapabilities(p,a)       (p)->GetCapabilities(a)
01737 #define IDirectInputDevice7_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
01738 #define IDirectInputDevice7_GetProperty(p,a,b)         (p)->GetProperty(a,b)
01739 #define IDirectInputDevice7_SetProperty(p,a,b)         (p)->SetProperty(a,b)
01740 #define IDirectInputDevice7_Acquire(p)                 (p)->Acquire()
01741 #define IDirectInputDevice7_Unacquire(p)               (p)->Unacquire()
01742 #define IDirectInputDevice7_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
01743 #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
01744 #define IDirectInputDevice7_SetDataFormat(p,a)         (p)->SetDataFormat(a)
01745 #define IDirectInputDevice7_SetEventNotification(p,a)  (p)->SetEventNotification(a)
01746 #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
01747 #define IDirectInputDevice7_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
01748 #define IDirectInputDevice7_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
01749 #define IDirectInputDevice7_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
01750 #define IDirectInputDevice7_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
01751 /*** IDirectInputDevice2 methods ***/
01752 #define IDirectInputDevice7_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
01753 #define IDirectInputDevice7_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
01754 #define IDirectInputDevice7_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
01755 #define IDirectInputDevice7_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
01756 #define IDirectInputDevice7_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
01757 #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
01758 #define IDirectInputDevice7_Escape(p,a)                       (p)->Escape(a)
01759 #define IDirectInputDevice7_Poll(p)                           (p)->Poll()
01760 #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
01761 /*** IDirectInputDevice7 methods ***/
01762 #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
01763 #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
01764 #endif
01765 
01766 #endif /* DI7 */
01767 
01768 #if DIRECTINPUT_VERSION >= 0x0800
01769 /*****************************************************************************
01770  * IDirectInputDevice8A interface
01771  */
01772 #define INTERFACE IDirectInputDevice8A
01773 DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A)
01774 {
01775     /*** IUnknown methods ***/
01776     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01777     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01778     STDMETHOD_(ULONG,Release)(THIS) PURE;
01779     /*** IDirectInputDeviceA methods ***/
01780     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01781     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01782     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01783     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01784     STDMETHOD(Acquire)(THIS) PURE;
01785     STDMETHOD(Unacquire)(THIS) PURE;
01786     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01787     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01788     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01789     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01790     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01791     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01792     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
01793     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01794     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01795     /*** IDirectInputDevice2A methods ***/
01796     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01797     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01798     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
01799     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01800     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01801     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01802     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01803     STDMETHOD(Poll)(THIS) PURE;
01804     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01805     /*** IDirectInputDevice7A methods ***/
01806     STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
01807     STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
01808     /*** IDirectInputDevice8A methods ***/
01809     STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;
01810     STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;
01811     STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE;
01812 };
01813 #undef INTERFACE
01814 
01815 /*****************************************************************************
01816  * IDirectInputDevice8W interface
01817  */
01818 #define INTERFACE IDirectInputDevice8W
01819 DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W)
01820 {
01821     /*** IUnknown methods ***/
01822     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01823     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01824     STDMETHOD_(ULONG,Release)(THIS) PURE;
01825     /*** IDirectInputDeviceW methods ***/
01826     STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
01827     STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01828     STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
01829     STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
01830     STDMETHOD(Acquire)(THIS) PURE;
01831     STDMETHOD(Unacquire)(THIS) PURE;
01832     STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
01833     STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
01834     STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
01835     STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
01836     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
01837     STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
01838     STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
01839     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01840     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
01841     /*** IDirectInputDevice2W methods ***/
01842     STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
01843     STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
01844     STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
01845     STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
01846     STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
01847     STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
01848     STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
01849     STDMETHOD(Poll)(THIS) PURE;
01850     STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
01851     /*** IDirectInputDevice7W methods ***/
01852     STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
01853     STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
01854     /*** IDirectInputDevice8W methods ***/
01855     STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;
01856     STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;
01857     STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE;
01858 };
01859 #undef INTERFACE
01860 
01861 #if !defined(__cplusplus) || defined(CINTERFACE)
01862 /*** IUnknown methods ***/
01863 #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01864 #define IDirectInputDevice8_AddRef(p)             (p)->lpVtbl->AddRef(p)
01865 #define IDirectInputDevice8_Release(p)            (p)->lpVtbl->Release(p)
01866 /*** IDirectInputDevice methods ***/
01867 #define IDirectInputDevice8_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
01868 #define IDirectInputDevice8_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
01869 #define IDirectInputDevice8_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
01870 #define IDirectInputDevice8_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
01871 #define IDirectInputDevice8_Acquire(p)                 (p)->lpVtbl->Acquire(p)
01872 #define IDirectInputDevice8_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
01873 #define IDirectInputDevice8_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
01874 #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
01875 #define IDirectInputDevice8_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
01876 #define IDirectInputDevice8_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
01877 #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
01878 #define IDirectInputDevice8_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
01879 #define IDirectInputDevice8_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
01880 #define IDirectInputDevice8_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
01881 #define IDirectInputDevice8_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
01882 /*** IDirectInputDevice2 methods ***/
01883 #define IDirectInputDevice8_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
01884 #define IDirectInputDevice8_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
01885 #define IDirectInputDevice8_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
01886 #define IDirectInputDevice8_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
01887 #define IDirectInputDevice8_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
01888 #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
01889 #define IDirectInputDevice8_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
01890 #define IDirectInputDevice8_Poll(p)                           (p)->lpVtbl->Poll(p)
01891 #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
01892 /*** IDirectInputDevice7 methods ***/
01893 #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
01894 #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
01895 /*** IDirectInputDevice8 methods ***/
01896 #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c)
01897 #define IDirectInputDevice8_SetActionMap(p,a,b,c)   (p)->lpVtbl->SetActionMap(p,a,b,c)
01898 #define IDirectInputDevice8_GetImageInfo(p,a)       (p)->lpVtbl->GetImageInfo(p,a)
01899 #else
01900 /*** IUnknown methods ***/
01901 #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01902 #define IDirectInputDevice8_AddRef(p)             (p)->AddRef()
01903 #define IDirectInputDevice8_Release(p)            (p)->Release()
01904 /*** IDirectInputDevice methods ***/
01905 #define IDirectInputDevice8_GetCapabilities(p,a)       (p)->GetCapabilities(a)
01906 #define IDirectInputDevice8_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
01907 #define IDirectInputDevice8_GetProperty(p,a,b)         (p)->GetProperty(a,b)
01908 #define IDirectInputDevice8_SetProperty(p,a,b)         (p)->SetProperty(a,b)
01909 #define IDirectInputDevice8_Acquire(p)                 (p)->Acquire()
01910 #define IDirectInputDevice8_Unacquire(p)               (p)->Unacquire()
01911 #define IDirectInputDevice8_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
01912 #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
01913 #define IDirectInputDevice8_SetDataFormat(p,a)         (p)->SetDataFormat(a)
01914 #define IDirectInputDevice8_SetEventNotification(p,a)  (p)->SetEventNotification(a)
01915 #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
01916 #define IDirectInputDevice8_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
01917 #define IDirectInputDevice8_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
01918 #define IDirectInputDevice8_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
01919 #define IDirectInputDevice8_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
01920 /*** IDirectInputDevice2 methods ***/
01921 #define IDirectInputDevice8_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
01922 #define IDirectInputDevice8_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
01923 #define IDirectInputDevice8_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
01924 #define IDirectInputDevice8_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
01925 #define IDirectInputDevice8_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
01926 #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
01927 #define IDirectInputDevice8_Escape(p,a)                       (p)->Escape(a)
01928 #define IDirectInputDevice8_Poll(p)                           (p)->Poll()
01929 #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
01930 /*** IDirectInputDevice7 methods ***/
01931 #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
01932 #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
01933 /*** IDirectInputDevice8 methods ***/
01934 #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c)
01935 #define IDirectInputDevice8_SetActionMap(p,a,b,c)   (p)->SetActionMap(a,b,c)
01936 #define IDirectInputDevice8_GetImageInfo(p,a)       (p)->GetImageInfo(a)
01937 #endif
01938 
01939 #endif /* DI8 */
01940 
01941 /* "Standard" Mouse report... */
01942 typedef struct DIMOUSESTATE {
01943   LONG lX;
01944   LONG lY;
01945   LONG lZ;
01946   BYTE rgbButtons[4];
01947 } DIMOUSESTATE;
01948 
01949 /* "Standard" Mouse report for DInput 7... */
01950 typedef struct DIMOUSESTATE2 {
01951   LONG lX;
01952   LONG lY;
01953   LONG lZ;
01954   BYTE rgbButtons[8];
01955 } DIMOUSESTATE2;
01956 
01957 #define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
01958 #define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
01959 #define DIMOFS_Z        FIELD_OFFSET(DIMOUSESTATE, lZ)
01960 #define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
01961 #define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
01962 #define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
01963 #define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
01964 #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
01965 #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
01966 #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
01967 #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
01968 
01969 #ifdef __cplusplus
01970 extern "C" {
01971 #endif
01972 extern const DIDATAFORMAT c_dfDIMouse;
01973 extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */
01974 extern const DIDATAFORMAT c_dfDIKeyboard;
01975 extern const DIDATAFORMAT c_dfDIJoystick;
01976 extern const DIDATAFORMAT c_dfDIJoystick2;
01977 #ifdef __cplusplus
01978 }
01979 #endif
01980 
01981 /*****************************************************************************
01982  * IDirectInputA interface
01983  */
01984 #define INTERFACE IDirectInputA
01985 DECLARE_INTERFACE_(IDirectInputA,IUnknown)
01986 {
01987     /*** IUnknown methods ***/
01988     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01989     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01990     STDMETHOD_(ULONG,Release)(THIS) PURE;
01991     /*** IDirectInputA methods ***/
01992     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
01993     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
01994     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
01995     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
01996     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
01997 };
01998 #undef INTERFACE
01999 
02000 /*****************************************************************************
02001  * IDirectInputW interface
02002  */
02003 #define INTERFACE IDirectInputW
02004 DECLARE_INTERFACE_(IDirectInputW,IUnknown)
02005 {
02006     /*** IUnknown methods ***/
02007     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02008     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02009     STDMETHOD_(ULONG,Release)(THIS) PURE;
02010     /*** IDirectInputW methods ***/
02011     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02012     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02013     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02014     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02015     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02016 };
02017 #undef INTERFACE
02018 
02019 #if !defined(__cplusplus) || defined(CINTERFACE)
02020 /*** IUnknown methods ***/
02021 #define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
02022 #define IDirectInput_AddRef(p)             (p)->lpVtbl->AddRef(p)
02023 #define IDirectInput_Release(p)            (p)->lpVtbl->Release(p)
02024 /*** IDirectInput methods ***/
02025 #define IDirectInput_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
02026 #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
02027 #define IDirectInput_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
02028 #define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
02029 #define IDirectInput_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
02030 #else
02031 /*** IUnknown methods ***/
02032 #define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
02033 #define IDirectInput_AddRef(p)             (p)->AddRef()
02034 #define IDirectInput_Release(p)            (p)->Release()
02035 /*** IDirectInput methods ***/
02036 #define IDirectInput_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
02037 #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
02038 #define IDirectInput_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
02039 #define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
02040 #define IDirectInput_Initialize(p,a,b)      (p)->Initialize(a,b)
02041 #endif
02042 
02043 /*****************************************************************************
02044  * IDirectInput2A interface
02045  */
02046 #define INTERFACE IDirectInput2A
02047 DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA)
02048 {
02049     /*** IUnknown methods ***/
02050     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02051     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02052     STDMETHOD_(ULONG,Release)(THIS) PURE;
02053     /*** IDirectInputA methods ***/
02054     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02055     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02056     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02057     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02058     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02059     /*** IDirectInput2A methods ***/
02060     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
02061 };
02062 #undef INTERFACE
02063 
02064 /*****************************************************************************
02065  * IDirectInput2W interface
02066  */
02067 #define INTERFACE IDirectInput2W
02068 DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW)
02069 {
02070     /*** IUnknown methods ***/
02071     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02072     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02073     STDMETHOD_(ULONG,Release)(THIS) PURE;
02074     /*** IDirectInputW methods ***/
02075     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02076     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02077     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02078     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02079     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02080     /*** IDirectInput2W methods ***/
02081     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
02082 };
02083 #undef INTERFACE
02084 
02085 #if !defined(__cplusplus) || defined(CINTERFACE)
02086 /*** IUnknown methods ***/
02087 #define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
02088 #define IDirectInput2_AddRef(p)             (p)->lpVtbl->AddRef(p)
02089 #define IDirectInput2_Release(p)            (p)->lpVtbl->Release(p)
02090 /*** IDirectInput methods ***/
02091 #define IDirectInput2_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
02092 #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
02093 #define IDirectInput2_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
02094 #define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
02095 #define IDirectInput2_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
02096 /*** IDirectInput2 methods ***/
02097 #define IDirectInput2_FindDevice(p,a,b,c)    (p)->lpVtbl->FindDevice(p,a,b,c)
02098 #else
02099 /*** IUnknown methods ***/
02100 #define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
02101 #define IDirectInput2_AddRef(p)             (p)->AddRef()
02102 #define IDirectInput2_Release(p)            (p)->Release()
02103 /*** IDirectInput methods ***/
02104 #define IDirectInput2_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
02105 #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
02106 #define IDirectInput2_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
02107 #define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
02108 #define IDirectInput2_Initialize(p,a,b)      (p)->Initialize(a,b)
02109 /*** IDirectInput2 methods ***/
02110 #define IDirectInput2_FindDevice(p,a,b,c)    (p)->FindDevice(a,b,c)
02111 #endif
02112 
02113 #if DIRECTINPUT_VERSION >= 0x0700
02114 /*****************************************************************************
02115  * IDirectInput7A interface
02116  */
02117 #define INTERFACE IDirectInput7A
02118 DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A)
02119 {
02120     /*** IUnknown methods ***/
02121     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02122     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02123     STDMETHOD_(ULONG,Release)(THIS) PURE;
02124     /*** IDirectInputA methods ***/
02125     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02126     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02127     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02128     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02129     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02130     /*** IDirectInput2A methods ***/
02131     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
02132     /*** IDirectInput7A methods ***/
02133     STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
02134 };
02135 #undef INTERFACE
02136 
02137 /*****************************************************************************
02138  * IDirectInput7W interface
02139  */
02140 #define INTERFACE IDirectInput7W
02141 DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W)
02142 {
02143     /*** IUnknown methods ***/
02144     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02145     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02146     STDMETHOD_(ULONG,Release)(THIS) PURE;
02147     /*** IDirectInputW methods ***/
02148     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02149     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02150     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02151     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02152     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02153     /*** IDirectInput2W methods ***/
02154     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
02155     /*** IDirectInput7W methods ***/
02156     STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
02157 };
02158 #undef INTERFACE
02159 
02160 #if !defined(__cplusplus) || defined(CINTERFACE)
02161 /*** IUnknown methods ***/
02162 #define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
02163 #define IDirectInput7_AddRef(p)             (p)->lpVtbl->AddRef(p)
02164 #define IDirectInput7_Release(p)            (p)->lpVtbl->Release(p)
02165 /*** IDirectInput methods ***/
02166 #define IDirectInput7_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
02167 #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
02168 #define IDirectInput7_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
02169 #define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
02170 #define IDirectInput7_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
02171 /*** IDirectInput2 methods ***/
02172 #define IDirectInput7_FindDevice(p,a,b,c)    (p)->lpVtbl->FindDevice(p,a,b,c)
02173 /*** IDirectInput7 methods ***/
02174 #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d)
02175 #else
02176 /*** IUnknown methods ***/
02177 #define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
02178 #define IDirectInput7_AddRef(p)             (p)->AddRef()
02179 #define IDirectInput7_Release(p)            (p)->Release()
02180 /*** IDirectInput methods ***/
02181 #define IDirectInput7_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
02182 #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
02183 #define IDirectInput7_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
02184 #define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
02185 #define IDirectInput7_Initialize(p,a,b)      (p)->Initialize(a,b)
02186 /*** IDirectInput2 methods ***/
02187 #define IDirectInput7_FindDevice(p,a,b,c)    (p)->FindDevice(a,b,c)
02188 /*** IDirectInput7 methods ***/
02189 #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d)
02190 #endif
02191 
02192 #endif /* DI7 */
02193 
02194 #if DIRECTINPUT_VERSION >= 0x0800
02195 /*****************************************************************************
02196  * IDirectInput8A interface
02197  */
02198 #define INTERFACE IDirectInput8A
02199 DECLARE_INTERFACE_(IDirectInput8A,IUnknown)
02200 {
02201     /*** IUnknown methods ***/
02202     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02203     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02204     STDMETHOD_(ULONG,Release)(THIS) PURE;
02205     /*** IDirectInput8A methods ***/
02206     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02207     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02208     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02209     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02210     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02211     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
02212     STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02213     STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
02214 };
02215 #undef INTERFACE
02216 
02217 /*****************************************************************************
02218  * IDirectInput8W interface
02219  */
02220 #define INTERFACE IDirectInput8W
02221 DECLARE_INTERFACE_(IDirectInput8W,IUnknown)
02222 {
02223     /*** IUnknown methods ***/
02224     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
02225     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
02226     STDMETHOD_(ULONG,Release)(THIS) PURE;
02227     /*** IDirectInput8W methods ***/
02228     STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
02229     STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02230     STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
02231     STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
02232     STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
02233     STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
02234     STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
02235     STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
02236 };
02237 #undef INTERFACE
02238 
02239 #if !defined(__cplusplus) || defined(CINTERFACE)
02240 /*** IUnknown methods ***/
02241 #define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
02242 #define IDirectInput8_AddRef(p)             (p)->lpVtbl->AddRef(p)
02243 #define IDirectInput8_Release(p)            (p)->lpVtbl->Release(p)
02244 /*** IDirectInput8 methods ***/
02245 #define IDirectInput8_CreateDevice(p,a,b,c)       (p)->lpVtbl->CreateDevice(p,a,b,c)
02246 #define IDirectInput8_EnumDevices(p,a,b,c,d)      (p)->lpVtbl->EnumDevices(p,a,b,c,d)
02247 #define IDirectInput8_GetDeviceStatus(p,a)        (p)->lpVtbl->GetDeviceStatus(p,a)
02248 #define IDirectInput8_RunControlPanel(p,a,b)      (p)->lpVtbl->RunControlPanel(p,a,b)
02249 #define IDirectInput8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
02250 #define IDirectInput8_FindDevice(p,a,b,c)         (p)->lpVtbl->FindDevice(p,a,b,c)
02251 #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)
02252 #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d)
02253 #else
02254 /*** IUnknown methods ***/
02255 #define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
02256 #define IDirectInput8_AddRef(p)             (p)->AddRef()
02257 #define IDirectInput8_Release(p)            (p)->Release()
02258 /*** IDirectInput8 methods ***/
02259 #define IDirectInput8_CreateDevice(p,a,b,c)       (p)->CreateDevice(a,b,c)
02260 #define IDirectInput8_EnumDevices(p,a,b,c,d)      (p)->EnumDevices(a,b,c,d)
02261 #define IDirectInput8_GetDeviceStatus(p,a)        (p)->GetDeviceStatus(a)
02262 #define IDirectInput8_RunControlPanel(p,a,b)      (p)->RunControlPanel(a,b)
02263 #define IDirectInput8_Initialize(p,a,b)           (p)->Initialize(a,b)
02264 #define IDirectInput8_FindDevice(p,a,b,c)         (p)->FindDevice(a,b,c)
02265 #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e)
02266 #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d)
02267 #endif
02268 
02269 #endif /* DI8 */
02270 
02271 /* Export functions */
02272 
02273 #ifdef __cplusplus
02274 extern "C" {
02275 #endif
02276 
02277 #if DIRECTINPUT_VERSION >= 0x0800
02278 HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
02279 #endif
02280 
02281 HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN);
02282 HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN);
02283 #define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate)
02284 
02285 HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
02286 
02287 #ifdef __cplusplus
02288 }
02289 #endif
02290 
02291 #endif /* __WINE_DINPUT_H */

Generated on Sat May 26 2012 04:30:05 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.