zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

dinputd.h (40451B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/dinputd.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __dinputd_h__
     17 #define __dinputd_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDirectInputEffectDriver_FWD_DEFINED__
     22 #define __IDirectInputEffectDriver_FWD_DEFINED__
     23 typedef interface IDirectInputEffectDriver IDirectInputEffectDriver;
     24 #ifdef __cplusplus
     25 interface IDirectInputEffectDriver;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDirectInputJoyConfig_FWD_DEFINED__
     30 #define __IDirectInputJoyConfig_FWD_DEFINED__
     31 typedef interface IDirectInputJoyConfig IDirectInputJoyConfig;
     32 #ifdef __cplusplus
     33 interface IDirectInputJoyConfig;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDirectInputJoyConfig8_FWD_DEFINED__
     38 #define __IDirectInputJoyConfig8_FWD_DEFINED__
     39 typedef interface IDirectInputJoyConfig8 IDirectInputJoyConfig8;
     40 #ifdef __cplusplus
     41 interface IDirectInputJoyConfig8;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 /* Headers for imported files */
     46 
     47 #include <unknwn.h>
     48 
     49 #ifdef __cplusplus
     50 extern "C" {
     51 #endif
     52 
     53 #include "winapifamily.h"
     54 #ifndef DIRECTINPUT_VERSION
     55 #define DIRECTINPUT_VERSION 0x0800
     56 #endif
     57 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
     58 
     59 typedef struct DIOBJECTATTRIBUTES {
     60     DWORD dwFlags;
     61     WORD wUsagePage;
     62     WORD wUsage;
     63 } DIOBJECTATTRIBUTES;
     64 typedef struct DIOBJECTATTRIBUTES *LPDIOBJECTATTRIBUTES;
     65 typedef const DIOBJECTATTRIBUTES *LPCDIOBJECTATTRIBUTES;
     66 
     67 typedef struct DIFFOBJECTATTRIBUTES {
     68     DWORD dwFFMaxForce;
     69     DWORD dwFFForceResolution;
     70 } DIFFOBJECTATTRIBUTES;
     71 typedef struct DIFFOBJECTATTRIBUTES *LPDIFFOBJECTATTRIBUTES;
     72 typedef const DIFFOBJECTATTRIBUTES *LPCDIFFOBJECTATTRIBUTES;
     73 
     74 typedef struct DIOBJECTCALIBRATION {
     75     LONG lMin;
     76     LONG lCenter;
     77     LONG lMax;
     78 } DIOBJECTCALIBRATION;
     79 typedef struct DIOBJECTCALIBRATION *LPDIOBJECTCALIBRATION;
     80 typedef const DIOBJECTCALIBRATION *LPCDIOBJECTCALIBRATION;
     81 
     82 typedef struct DIPOVCALIBRATION {
     83     LONG lMin[5];
     84     LONG lMax[5];
     85 } DIPOVCALIBRATION;
     86 typedef struct DIPOVCALIBRATION *LPDIPOVCALIBRATION;
     87 typedef const DIPOVCALIBRATION *LPCDIPOVCALIBRATION;
     88 
     89 typedef struct DIEFFECTATTRIBUTES {
     90     DWORD dwEffectId;
     91     DWORD dwEffType;
     92     DWORD dwStaticParams;
     93     DWORD dwDynamicParams;
     94     DWORD dwCoords;
     95 } DIEFFECTATTRIBUTES;
     96 typedef struct DIEFFECTATTRIBUTES *LPDIEFFECTATTRIBUTES;
     97 typedef const DIEFFECTATTRIBUTES *LPCDIEFFECTATTRIBUTES;
     98 
     99 typedef struct DIFFDEVICEATTRIBUTES {
    100     DWORD dwFlags;
    101     DWORD dwFFSamplePeriod;
    102     DWORD dwFFMinTimeResolution;
    103 } DIFFDEVICEATTRIBUTES;
    104 typedef struct DIFFDEVICEATTRIBUTES *LPDIFFDEVICEATTRIBUTES;
    105 typedef const DIFFDEVICEATTRIBUTES *LPCDIFFDEVICEATTRIBUTES;
    106 
    107 typedef struct DIDRIVERVERSIONS {
    108     DWORD dwSize;
    109     DWORD dwFirmwareRevision;
    110     DWORD dwHardwareRevision;
    111     DWORD dwFFDriverVersion;
    112 } DIDRIVERVERSIONS;
    113 typedef struct DIDRIVERVERSIONS *LPDIDRIVERVERSIONS;
    114 typedef const DIDRIVERVERSIONS *LPCDIDRIVERVERSIONS;
    115 
    116 typedef struct DIDEVICESTATE {
    117     DWORD dwSize;
    118     DWORD dwState;
    119     DWORD dwLoad;
    120 } DIDEVICESTATE;
    121 typedef struct DIDEVICESTATE *LPDIDEVICESTATE;
    122 #define DEV_STS_EFFECT_RUNNING DIEGES_PLAYING
    123 #ifndef DIJ_RINGZERO
    124 
    125 typedef struct DIHIDFFINITINFO {
    126     DWORD dwSize;
    127     LPWSTR pwszDeviceInterface;
    128     GUID GuidInstance;
    129 } DIHIDFFINITINFO;
    130 typedef struct DIHIDFFINITINFO *LPDIHIDFFINITINFO;
    131 #if 0
    132 typedef struct DIEFFESCAPE DIEFFESCAPE;
    133 typedef struct DIEFFESCAPE *LPDIEFFESCAPE;
    134 typedef struct DIEFFECT DIEFFECT;
    135 typedef struct DIEFFECT *LPDIEFFECT;
    136 typedef const DIEFFECT *LPCDIEFFECT;
    137 #endif
    138 
    139 /*****************************************************************************
    140  * IDirectInputEffectDriver interface
    141  */
    142 #ifndef __IDirectInputEffectDriver_INTERFACE_DEFINED__
    143 #define __IDirectInputEffectDriver_INTERFACE_DEFINED__
    144 
    145 DEFINE_GUID(IID_IDirectInputEffectDriver, 0x02538130, 0x898f, 0x11d0, 0x9a,0xd0, 0x00,0xa0,0xc9,0xa0,0x6e,0x35);
    146 #if defined(__cplusplus) && !defined(CINTERFACE)
    147 MIDL_INTERFACE("02538130-898f-11d0-9ad0-00a0c9a06e35")
    148 IDirectInputEffectDriver : public IUnknown
    149 {
    150     virtual HRESULT STDMETHODCALLTYPE DeviceID(
    151         DWORD a,
    152         DWORD b,
    153         DWORD c,
    154         DWORD d,
    155         LPVOID e) = 0;
    156 
    157     virtual HRESULT STDMETHODCALLTYPE GetVersions(
    158         LPDIDRIVERVERSIONS a) = 0;
    159 
    160     virtual HRESULT STDMETHODCALLTYPE Escape(
    161         DWORD a,
    162         DWORD b,
    163         LPDIEFFESCAPE c) = 0;
    164 
    165     virtual HRESULT STDMETHODCALLTYPE SetGain(
    166         DWORD a,
    167         DWORD b) = 0;
    168 
    169     virtual HRESULT STDMETHODCALLTYPE SendForceFeedbackCommand(
    170         DWORD a,
    171         DWORD b) = 0;
    172 
    173     virtual HRESULT STDMETHODCALLTYPE GetForceFeedbackState(
    174         DWORD a,
    175         LPDIDEVICESTATE b) = 0;
    176 
    177     virtual HRESULT STDMETHODCALLTYPE DownloadEffect(
    178         DWORD a,
    179         DWORD b,
    180         LPDWORD c,
    181         LPCDIEFFECT d,
    182         DWORD e) = 0;
    183 
    184     virtual HRESULT STDMETHODCALLTYPE DestroyEffect(
    185         DWORD a,
    186         DWORD b) = 0;
    187 
    188     virtual HRESULT STDMETHODCALLTYPE StartEffect(
    189         DWORD a,
    190         DWORD b,
    191         DWORD c,
    192         DWORD d) = 0;
    193 
    194     virtual HRESULT STDMETHODCALLTYPE StopEffect(
    195         DWORD a,
    196         DWORD b) = 0;
    197 
    198     virtual HRESULT STDMETHODCALLTYPE GetEffectStatus(
    199         DWORD a,
    200         DWORD b,
    201         LPDWORD c) = 0;
    202 
    203 };
    204 #ifdef __CRT_UUID_DECL
    205 __CRT_UUID_DECL(IDirectInputEffectDriver, 0x02538130, 0x898f, 0x11d0, 0x9a,0xd0, 0x00,0xa0,0xc9,0xa0,0x6e,0x35)
    206 #endif
    207 #else
    208 typedef struct IDirectInputEffectDriverVtbl {
    209     BEGIN_INTERFACE
    210 
    211     /*** IUnknown methods ***/
    212     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    213         IDirectInputEffectDriver *This,
    214         REFIID riid,
    215         void **ppvObject);
    216 
    217     ULONG (STDMETHODCALLTYPE *AddRef)(
    218         IDirectInputEffectDriver *This);
    219 
    220     ULONG (STDMETHODCALLTYPE *Release)(
    221         IDirectInputEffectDriver *This);
    222 
    223     /*** IDirectInputEffectDriver methods ***/
    224     HRESULT (STDMETHODCALLTYPE *DeviceID)(
    225         IDirectInputEffectDriver *This,
    226         DWORD a,
    227         DWORD b,
    228         DWORD c,
    229         DWORD d,
    230         LPVOID e);
    231 
    232     HRESULT (STDMETHODCALLTYPE *GetVersions)(
    233         IDirectInputEffectDriver *This,
    234         LPDIDRIVERVERSIONS a);
    235 
    236     HRESULT (STDMETHODCALLTYPE *Escape)(
    237         IDirectInputEffectDriver *This,
    238         DWORD a,
    239         DWORD b,
    240         LPDIEFFESCAPE c);
    241 
    242     HRESULT (STDMETHODCALLTYPE *SetGain)(
    243         IDirectInputEffectDriver *This,
    244         DWORD a,
    245         DWORD b);
    246 
    247     HRESULT (STDMETHODCALLTYPE *SendForceFeedbackCommand)(
    248         IDirectInputEffectDriver *This,
    249         DWORD a,
    250         DWORD b);
    251 
    252     HRESULT (STDMETHODCALLTYPE *GetForceFeedbackState)(
    253         IDirectInputEffectDriver *This,
    254         DWORD a,
    255         LPDIDEVICESTATE b);
    256 
    257     HRESULT (STDMETHODCALLTYPE *DownloadEffect)(
    258         IDirectInputEffectDriver *This,
    259         DWORD a,
    260         DWORD b,
    261         LPDWORD c,
    262         LPCDIEFFECT d,
    263         DWORD e);
    264 
    265     HRESULT (STDMETHODCALLTYPE *DestroyEffect)(
    266         IDirectInputEffectDriver *This,
    267         DWORD a,
    268         DWORD b);
    269 
    270     HRESULT (STDMETHODCALLTYPE *StartEffect)(
    271         IDirectInputEffectDriver *This,
    272         DWORD a,
    273         DWORD b,
    274         DWORD c,
    275         DWORD d);
    276 
    277     HRESULT (STDMETHODCALLTYPE *StopEffect)(
    278         IDirectInputEffectDriver *This,
    279         DWORD a,
    280         DWORD b);
    281 
    282     HRESULT (STDMETHODCALLTYPE *GetEffectStatus)(
    283         IDirectInputEffectDriver *This,
    284         DWORD a,
    285         DWORD b,
    286         LPDWORD c);
    287 
    288     END_INTERFACE
    289 } IDirectInputEffectDriverVtbl;
    290 
    291 interface IDirectInputEffectDriver {
    292     CONST_VTBL IDirectInputEffectDriverVtbl* lpVtbl;
    293 };
    294 
    295 #ifdef COBJMACROS
    296 #ifndef WIDL_C_INLINE_WRAPPERS
    297 /*** IUnknown methods ***/
    298 #define IDirectInputEffectDriver_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    299 #define IDirectInputEffectDriver_AddRef(This) (This)->lpVtbl->AddRef(This)
    300 #define IDirectInputEffectDriver_Release(This) (This)->lpVtbl->Release(This)
    301 /*** IDirectInputEffectDriver methods ***/
    302 #define IDirectInputEffectDriver_DeviceID(This,a,b,c,d,e) (This)->lpVtbl->DeviceID(This,a,b,c,d,e)
    303 #define IDirectInputEffectDriver_GetVersions(This,a) (This)->lpVtbl->GetVersions(This,a)
    304 #define IDirectInputEffectDriver_Escape(This,a,b,c) (This)->lpVtbl->Escape(This,a,b,c)
    305 #define IDirectInputEffectDriver_SetGain(This,a,b) (This)->lpVtbl->SetGain(This,a,b)
    306 #define IDirectInputEffectDriver_SendForceFeedbackCommand(This,a,b) (This)->lpVtbl->SendForceFeedbackCommand(This,a,b)
    307 #define IDirectInputEffectDriver_GetForceFeedbackState(This,a,b) (This)->lpVtbl->GetForceFeedbackState(This,a,b)
    308 #define IDirectInputEffectDriver_DownloadEffect(This,a,b,c,d,e) (This)->lpVtbl->DownloadEffect(This,a,b,c,d,e)
    309 #define IDirectInputEffectDriver_DestroyEffect(This,a,b) (This)->lpVtbl->DestroyEffect(This,a,b)
    310 #define IDirectInputEffectDriver_StartEffect(This,a,b,c,d) (This)->lpVtbl->StartEffect(This,a,b,c,d)
    311 #define IDirectInputEffectDriver_StopEffect(This,a,b) (This)->lpVtbl->StopEffect(This,a,b)
    312 #define IDirectInputEffectDriver_GetEffectStatus(This,a,b,c) (This)->lpVtbl->GetEffectStatus(This,a,b,c)
    313 #else
    314 /*** IUnknown methods ***/
    315 static inline HRESULT IDirectInputEffectDriver_QueryInterface(IDirectInputEffectDriver* This,REFIID riid,void **ppvObject) {
    316     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    317 }
    318 static inline ULONG IDirectInputEffectDriver_AddRef(IDirectInputEffectDriver* This) {
    319     return This->lpVtbl->AddRef(This);
    320 }
    321 static inline ULONG IDirectInputEffectDriver_Release(IDirectInputEffectDriver* This) {
    322     return This->lpVtbl->Release(This);
    323 }
    324 /*** IDirectInputEffectDriver methods ***/
    325 static inline HRESULT IDirectInputEffectDriver_DeviceID(IDirectInputEffectDriver* This,DWORD a,DWORD b,DWORD c,DWORD d,LPVOID e) {
    326     return This->lpVtbl->DeviceID(This,a,b,c,d,e);
    327 }
    328 static inline HRESULT IDirectInputEffectDriver_GetVersions(IDirectInputEffectDriver* This,LPDIDRIVERVERSIONS a) {
    329     return This->lpVtbl->GetVersions(This,a);
    330 }
    331 static inline HRESULT IDirectInputEffectDriver_Escape(IDirectInputEffectDriver* This,DWORD a,DWORD b,LPDIEFFESCAPE c) {
    332     return This->lpVtbl->Escape(This,a,b,c);
    333 }
    334 static inline HRESULT IDirectInputEffectDriver_SetGain(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
    335     return This->lpVtbl->SetGain(This,a,b);
    336 }
    337 static inline HRESULT IDirectInputEffectDriver_SendForceFeedbackCommand(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
    338     return This->lpVtbl->SendForceFeedbackCommand(This,a,b);
    339 }
    340 static inline HRESULT IDirectInputEffectDriver_GetForceFeedbackState(IDirectInputEffectDriver* This,DWORD a,LPDIDEVICESTATE b) {
    341     return This->lpVtbl->GetForceFeedbackState(This,a,b);
    342 }
    343 static inline HRESULT IDirectInputEffectDriver_DownloadEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b,LPDWORD c,LPCDIEFFECT d,DWORD e) {
    344     return This->lpVtbl->DownloadEffect(This,a,b,c,d,e);
    345 }
    346 static inline HRESULT IDirectInputEffectDriver_DestroyEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
    347     return This->lpVtbl->DestroyEffect(This,a,b);
    348 }
    349 static inline HRESULT IDirectInputEffectDriver_StartEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b,DWORD c,DWORD d) {
    350     return This->lpVtbl->StartEffect(This,a,b,c,d);
    351 }
    352 static inline HRESULT IDirectInputEffectDriver_StopEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
    353     return This->lpVtbl->StopEffect(This,a,b);
    354 }
    355 static inline HRESULT IDirectInputEffectDriver_GetEffectStatus(IDirectInputEffectDriver* This,DWORD a,DWORD b,LPDWORD c) {
    356     return This->lpVtbl->GetEffectStatus(This,a,b,c);
    357 }
    358 #endif
    359 #endif
    360 
    361 #endif
    362 
    363 
    364 #endif  /* __IDirectInputEffectDriver_INTERFACE_DEFINED__ */
    365 
    366 #endif /* DIJ_RINGZERO */
    367 #ifndef JOY_HW_NONE
    368 #define JOY_HW_NONE 0
    369 #define JOY_HW_CUSTOM 1
    370 #define JOY_HW_2A_2B_GENERIC 2
    371 #define JOY_HW_2A_4B_GENERIC 3
    372 #define JOY_HW_2B_GAMEPAD 4
    373 #define JOY_HW_2B_FLIGHTYOKE 5
    374 #define JOY_HW_2B_FLIGHTYOKETHROTTLE 6
    375 #define JOY_HW_3A_2B_GENERIC 7
    376 #define JOY_HW_3A_4B_GENERIC 8
    377 #define JOY_HW_4B_GAMEPAD 9
    378 #define JOY_HW_4B_FLIGHTYOKE 10
    379 #define JOY_HW_4B_FLIGHTYOKETHROTTLE 11
    380 #define JOY_HW_TWO_2A_2B_WITH_Y 12
    381 #define JOY_HW_LASTENTRY 13
    382 #define JOY_ISCAL_XY 0x00000001
    383 #define JOY_ISCAL_Z 0x00000002
    384 #define JOY_ISCAL_R 0x00000004
    385 #define JOY_ISCAL_U 0x00000008
    386 #define JOY_ISCAL_V 0x00000010
    387 #define JOY_ISCAL_POV 0x00000020
    388 #define JOY_POVVAL_FORWARD (0)
    389 
    390 #define JOY_POVVAL_BACKWARD (1)
    391 
    392 #define JOY_POVVAL_LEFT (2)
    393 
    394 #define JOY_POVVAL_RIGHT (3)
    395 
    396 #define JOY_POV_NUMDIRS (4)
    397 
    398 #define JOY_HWS_HASZ 0x00000001
    399 #define JOY_HWS_HASPOV 0x00000002
    400 #define JOY_HWS_POVISBUTTONCOMBOS 0x00000004
    401 #define JOY_HWS_POVISPOLL 0x00000008
    402 #define JOY_HWS_ISYOKE 0x00000010
    403 #define JOY_HWS_ISGAMEPAD 0x00000020
    404 #define JOY_HWS_ISCARCTRL 0x00000040
    405 #define JOY_HWS_XISJ1Y 0x00000080
    406 #define JOY_HWS_XISJ2X 0x00000100
    407 #define JOY_HWS_XISJ2Y 0x00000200
    408 #define JOY_HWS_YISJ1X 0x00000400
    409 #define JOY_HWS_YISJ2X 0x00000800
    410 #define JOY_HWS_YISJ2Y 0x00001000
    411 #define JOY_HWS_ZISJ1X 0x00002000
    412 #define JOY_HWS_ZISJ1Y 0x00004000
    413 #define JOY_HWS_ZISJ2X 0x00008000
    414 #define JOY_HWS_POVISJ1X 0x00010000
    415 #define JOY_HWS_POVISJ1Y 0x00020000
    416 #define JOY_HWS_POVISJ2X 0x00040000
    417 #define JOY_HWS_HASR 0x00080000
    418 #define JOY_HWS_RISJ1X 0x00100000
    419 #define JOY_HWS_RISJ1Y 0x00200000
    420 #define JOY_HWS_RISJ2Y 0x00400000
    421 #define JOY_HWS_HASU 0x00800000
    422 #define JOY_HWS_HASV 0x01000000
    423 #define JOY_US_HASRUDDER 0x00000001
    424 #define JOY_US_PRESENT 0x00000002
    425 #define JOY_US_ISOEM 0x00000004
    426 #define JOY_US_RESERVED 0x80000000
    427 #define JOYTYPE_ZEROGAMEENUMOEMDATA 0x00000001
    428 #define JOYTYPE_NOAUTODETECTGAMEPORT 0x00000002
    429 #define JOYTYPE_NOHIDDIRECT 0x00000004
    430 #define JOYTYPE_ANALOGCOMPAT 0x00000008
    431 #define JOYTYPE_DEFAULTPROPSHEET 0x80000000
    432 #define JOYTYPE_DEVICEHIDE 0x00010000
    433 #define JOYTYPE_MOUSEHIDE 0x00020000
    434 #define JOYTYPE_KEYBHIDE 0x00040000
    435 #define JOYTYPE_GAMEHIDE 0x00080000
    436 #define JOYTYPE_HIDEACTIVE 0x00100000
    437 #define JOYTYPE_INFOMASK 0x00E00000
    438 #define JOYTYPE_INFODEFAULT 0x00000000
    439 #define JOYTYPE_INFOYYPEDALS 0x00200000
    440 #define JOYTYPE_INFOZYPEDALS 0x00400000
    441 #define JOYTYPE_INFOYRPEDALS 0x00600000
    442 #define JOYTYPE_INFOZRPEDALS 0x00800000
    443 #define JOYTYPE_INFOZISSLIDER 0x00200000
    444 #define JOYTYPE_INFOZISZ 0x00400000
    445 #define JOYTYPE_ENABLEINPUTREPORT 0x01000000
    446 
    447 typedef struct joypos_tag {
    448     DWORD dwX;
    449     DWORD dwY;
    450     DWORD dwZ;
    451     DWORD dwR;
    452     DWORD dwU;
    453     DWORD dwV;
    454 } JOYPOS;
    455 typedef struct joypos_tag *LPJOYPOS;
    456 
    457 typedef struct joyrange_tag {
    458     JOYPOS jpMin;
    459     JOYPOS jpMax;
    460     JOYPOS jpCenter;
    461 } JOYRANGE;
    462 typedef struct joyrange_tag *LPJOYRANGE;
    463 
    464 typedef struct joyreguservalues_tag {
    465     DWORD dwTimeOut;
    466     JOYRANGE jrvRanges;
    467     JOYPOS jpDeadZone;
    468 } JOYREGUSERVALUES;
    469 typedef struct joyreguservalues_tag *LPJOYREGUSERVALUES;
    470 
    471 typedef struct joyreghwsettings_tag {
    472     DWORD dwFlags;
    473     DWORD dwNumButtons;
    474 } JOYREGHWSETTINGS;
    475 typedef struct joyreghwsettings_tag *LPJOYHWSETTINGS;
    476 
    477 typedef struct joyreghwvalues_tag {
    478     JOYRANGE jrvHardware;
    479     DWORD dwPOVValues[4];
    480     DWORD dwCalFlags;
    481 } JOYREGHWVALUES;
    482 typedef struct joyreghwvalues_tag *LPJOYREGHWVALUES;
    483 
    484 typedef struct joyreghwconfig_tag {
    485     JOYREGHWSETTINGS hws;
    486     DWORD dwUsageSettings;
    487     JOYREGHWVALUES hwv;
    488     DWORD dwType;
    489     DWORD dwReserved;
    490 } JOYREGHWCONFIG;
    491 typedef struct joyreghwconfig_tag *LPJOYREGHWCONFIG;
    492 
    493 typedef struct joycalibrate_tag {
    494     UINT wXbase;
    495     UINT wXdelta;
    496     UINT wYbase;
    497     UINT wYdelta;
    498     UINT wZbase;
    499     UINT wZdelta;
    500 } JOYCALIBRATE;
    501 typedef struct joycalibrate_tag *LPJOYCALIBRATE;
    502 #endif /* JOY_HW_NONE */
    503 #ifndef DIJ_RINGZERO
    504 #define MAX_JOYSTRING (256)
    505 
    506 typedef WINBOOL (WINAPI *LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID);
    507 #if 0
    508 #define MAX_JOYSTICKOEMVXDNAME (260)
    509 
    510 #endif
    511 #ifndef MAX_JOYSTICKOEMVXDNAME
    512 #define MAX_JOYSTICKOEMVXDNAME 260
    513 #endif
    514 #define DITC_REGHWSETTINGS 0x00000001
    515 #define DITC_CLSIDCONFIG 0x00000002
    516 #define DITC_DISPLAYNAME 0x00000004
    517 #define DITC_CALLOUT 0x00000008
    518 #define DITC_HARDWAREID 0x00000010
    519 #define DITC_FLAGS1 0x00000020
    520 #define DITC_FLAGS2 0x00000040
    521 #define DITC_MAPFILE 0x00000080
    522 
    523 typedef struct DIJOYTYPEINFO_DX5 {
    524     DWORD dwSize;
    525     JOYREGHWSETTINGS hws;
    526     CLSID clsidConfig;
    527     WCHAR wszDisplayName[256];
    528     WCHAR wszCallout[260];
    529 } DIJOYTYPEINFO_DX5;
    530 typedef struct DIJOYTYPEINFO_DX5 *LPDIJOYTYPEINFO_DX5;
    531 typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5;
    532 
    533 typedef struct DIJOYTYPEINFO_DX6 {
    534     DWORD dwSize;
    535     JOYREGHWSETTINGS hws;
    536     CLSID clsidConfig;
    537     WCHAR wszDisplayName[256];
    538     WCHAR wszCallout[260];
    539     WCHAR wszHardwareId[256];
    540     DWORD dwFlags1;
    541 } DIJOYTYPEINFO_DX6;
    542 typedef struct DIJOYTYPEINFO_DX6 *LPDIJOYTYPEINFO_DX6;
    543 typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6;
    544 
    545 typedef struct DIJOYTYPEINFO {
    546     DWORD dwSize;
    547     JOYREGHWSETTINGS hws;
    548     CLSID clsidConfig;
    549     WCHAR wszDisplayName[256];
    550     WCHAR wszCallout[260];
    551     WCHAR wszHardwareId[256];
    552     DWORD dwFlags1;
    553     DWORD dwFlags2;
    554     WCHAR wszMapFile[256];
    555 } DIJOYTYPEINFO;
    556 typedef struct DIJOYTYPEINFO *LPDIJOYTYPEINFO;
    557 typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO;
    558 #define DIJC_GUIDINSTANCE 0x00000001
    559 #define DIJC_REGHWCONFIGTYPE 0x00000002
    560 #define DIJC_GAIN 0x00000004
    561 #define DIJC_CALLOUT 0x00000008
    562 #define DIJC_WDMGAMEPORT 0x00000010
    563 
    564 typedef struct DIJOYCONFIG_DX5 {
    565     DWORD dwSize;
    566     GUID guidInstance;
    567     JOYREGHWCONFIG hwc;
    568     DWORD dwGain;
    569     WCHAR wszType[256];
    570     WCHAR wszCallout[256];
    571 } DIJOYCONFIG_DX5;
    572 typedef struct DIJOYCONFIG_DX5 *LPDIJOYCONFIG_DX5;
    573 typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5;
    574 
    575 typedef struct DIJOYCONFIG {
    576     DWORD dwSize;
    577     GUID guidInstance;
    578     JOYREGHWCONFIG hwc;
    579     DWORD dwGain;
    580     WCHAR wszType[256];
    581     WCHAR wszCallout[256];
    582     GUID guidGameport;
    583 } DIJOYCONFIG;
    584 typedef struct DIJOYCONFIG *LPDIJOYCONFIG;
    585 typedef const DIJOYCONFIG *LPCDIJOYCONFIG;
    586 #define DIJU_USERVALUES 0x00000001
    587 #define DIJU_GLOBALDRIVER 0x00000002
    588 #define DIJU_GAMEPORTEMULATOR 0x00000004
    589 
    590 typedef struct DIJOYUSERVALUES {
    591     DWORD dwSize;
    592     JOYREGUSERVALUES ruv;
    593     WCHAR wszGlobalDriver[256];
    594     WCHAR wszGameportEmulator[256];
    595 } DIJOYUSERVALUES;
    596 typedef struct DIJOYUSERVALUES *LPDIJOYUSERVALUES;
    597 typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES;
    598 DEFINE_GUID(GUID_KeyboardClass, 0x4d36e96b,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
    599 DEFINE_GUID(GUID_MediaClass, 0x4d36e96c,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
    600 DEFINE_GUID(GUID_MouseClass, 0x4d36e96f,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
    601 DEFINE_GUID(GUID_HIDClass, 0x745a17a0,0x74d3,0x11d0,0xb6,0xfe,0x00,0xa0,0xc9,0x0f,0x57,0xda);
    602 
    603 /*****************************************************************************
    604  * IDirectInputJoyConfig interface
    605  */
    606 #ifndef __IDirectInputJoyConfig_INTERFACE_DEFINED__
    607 #define __IDirectInputJoyConfig_INTERFACE_DEFINED__
    608 
    609 DEFINE_GUID(IID_IDirectInputJoyConfig, 0x1de12ab1, 0xc9f5, 0x11cf, 0xbf,0xc7, 0x44,0x45,0x53,0x54,0x00,0x00);
    610 #if defined(__cplusplus) && !defined(CINTERFACE)
    611 MIDL_INTERFACE("1de12ab1-c9f5-11cf-bfc7-444553540000")
    612 IDirectInputJoyConfig : public IUnknown
    613 {
    614     virtual HRESULT STDMETHODCALLTYPE Acquire(
    615         ) = 0;
    616 
    617     virtual HRESULT STDMETHODCALLTYPE Unacquire(
    618         ) = 0;
    619 
    620     virtual HRESULT STDMETHODCALLTYPE SetCooperativeLevel(
    621         HWND a,
    622         DWORD b) = 0;
    623 
    624     virtual HRESULT STDMETHODCALLTYPE SendNotify(
    625         ) = 0;
    626 
    627     virtual HRESULT STDMETHODCALLTYPE EnumTypes(
    628         LPVOID a,
    629         LPVOID b) = 0;
    630 
    631     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
    632         LPCWSTR a,
    633         LPDIJOYTYPEINFO b,
    634         DWORD c) = 0;
    635 
    636     virtual HRESULT STDMETHODCALLTYPE SetTypeInfo(
    637         LPCWSTR a,
    638         LPCDIJOYTYPEINFO b,
    639         DWORD c) = 0;
    640 
    641     virtual HRESULT STDMETHODCALLTYPE DeleteType(
    642         LPCWSTR a) = 0;
    643 
    644     virtual HRESULT STDMETHODCALLTYPE GetConfig(
    645         UINT a,
    646         LPDIJOYCONFIG b,
    647         DWORD c) = 0;
    648 
    649     virtual HRESULT STDMETHODCALLTYPE SetConfig(
    650         UINT a,
    651         LPCDIJOYCONFIG b,
    652         DWORD c) = 0;
    653 
    654     virtual HRESULT STDMETHODCALLTYPE DeleteConfig(
    655         UINT a) = 0;
    656 
    657     virtual HRESULT STDMETHODCALLTYPE GetUserValues(
    658         LPDIJOYUSERVALUES a,
    659         DWORD b) = 0;
    660 
    661     virtual HRESULT STDMETHODCALLTYPE SetUserValues(
    662         LPCDIJOYUSERVALUES a,
    663         DWORD b) = 0;
    664 
    665     virtual HRESULT STDMETHODCALLTYPE AddNewHardware(
    666         HWND a,
    667         REFGUID b) = 0;
    668 
    669     virtual HRESULT STDMETHODCALLTYPE OpenTypeKey(
    670         LPCWSTR a,
    671         DWORD b,
    672         HKEY *c) = 0;
    673 
    674     virtual HRESULT STDMETHODCALLTYPE OpenConfigKey(
    675         UINT a,
    676         DWORD b,
    677         HKEY *c) = 0;
    678 
    679 };
    680 #ifdef __CRT_UUID_DECL
    681 __CRT_UUID_DECL(IDirectInputJoyConfig, 0x1de12ab1, 0xc9f5, 0x11cf, 0xbf,0xc7, 0x44,0x45,0x53,0x54,0x00,0x00)
    682 #endif
    683 #else
    684 typedef struct IDirectInputJoyConfigVtbl {
    685     BEGIN_INTERFACE
    686 
    687     /*** IUnknown methods ***/
    688     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    689         IDirectInputJoyConfig *This,
    690         REFIID riid,
    691         void **ppvObject);
    692 
    693     ULONG (STDMETHODCALLTYPE *AddRef)(
    694         IDirectInputJoyConfig *This);
    695 
    696     ULONG (STDMETHODCALLTYPE *Release)(
    697         IDirectInputJoyConfig *This);
    698 
    699     /*** IDirectInputJoyConfig methods ***/
    700     HRESULT (STDMETHODCALLTYPE *Acquire)(
    701         IDirectInputJoyConfig *This);
    702 
    703     HRESULT (STDMETHODCALLTYPE *Unacquire)(
    704         IDirectInputJoyConfig *This);
    705 
    706     HRESULT (STDMETHODCALLTYPE *SetCooperativeLevel)(
    707         IDirectInputJoyConfig *This,
    708         HWND a,
    709         DWORD b);
    710 
    711     HRESULT (STDMETHODCALLTYPE *SendNotify)(
    712         IDirectInputJoyConfig *This);
    713 
    714     HRESULT (STDMETHODCALLTYPE *EnumTypes)(
    715         IDirectInputJoyConfig *This,
    716         LPVOID a,
    717         LPVOID b);
    718 
    719     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
    720         IDirectInputJoyConfig *This,
    721         LPCWSTR a,
    722         LPDIJOYTYPEINFO b,
    723         DWORD c);
    724 
    725     HRESULT (STDMETHODCALLTYPE *SetTypeInfo)(
    726         IDirectInputJoyConfig *This,
    727         LPCWSTR a,
    728         LPCDIJOYTYPEINFO b,
    729         DWORD c);
    730 
    731     HRESULT (STDMETHODCALLTYPE *DeleteType)(
    732         IDirectInputJoyConfig *This,
    733         LPCWSTR a);
    734 
    735     HRESULT (STDMETHODCALLTYPE *GetConfig)(
    736         IDirectInputJoyConfig *This,
    737         UINT a,
    738         LPDIJOYCONFIG b,
    739         DWORD c);
    740 
    741     HRESULT (STDMETHODCALLTYPE *SetConfig)(
    742         IDirectInputJoyConfig *This,
    743         UINT a,
    744         LPCDIJOYCONFIG b,
    745         DWORD c);
    746 
    747     HRESULT (STDMETHODCALLTYPE *DeleteConfig)(
    748         IDirectInputJoyConfig *This,
    749         UINT a);
    750 
    751     HRESULT (STDMETHODCALLTYPE *GetUserValues)(
    752         IDirectInputJoyConfig *This,
    753         LPDIJOYUSERVALUES a,
    754         DWORD b);
    755 
    756     HRESULT (STDMETHODCALLTYPE *SetUserValues)(
    757         IDirectInputJoyConfig *This,
    758         LPCDIJOYUSERVALUES a,
    759         DWORD b);
    760 
    761     HRESULT (STDMETHODCALLTYPE *AddNewHardware)(
    762         IDirectInputJoyConfig *This,
    763         HWND a,
    764         REFGUID b);
    765 
    766     HRESULT (STDMETHODCALLTYPE *OpenTypeKey)(
    767         IDirectInputJoyConfig *This,
    768         LPCWSTR a,
    769         DWORD b,
    770         HKEY *c);
    771 
    772     HRESULT (STDMETHODCALLTYPE *OpenConfigKey)(
    773         IDirectInputJoyConfig *This,
    774         UINT a,
    775         DWORD b,
    776         HKEY *c);
    777 
    778     END_INTERFACE
    779 } IDirectInputJoyConfigVtbl;
    780 
    781 interface IDirectInputJoyConfig {
    782     CONST_VTBL IDirectInputJoyConfigVtbl* lpVtbl;
    783 };
    784 
    785 #ifdef COBJMACROS
    786 #ifndef WIDL_C_INLINE_WRAPPERS
    787 /*** IUnknown methods ***/
    788 #define IDirectInputJoyConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    789 #define IDirectInputJoyConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
    790 #define IDirectInputJoyConfig_Release(This) (This)->lpVtbl->Release(This)
    791 /*** IDirectInputJoyConfig methods ***/
    792 #define IDirectInputJoyConfig_Acquire(This) (This)->lpVtbl->Acquire(This)
    793 #define IDirectInputJoyConfig_Unacquire(This) (This)->lpVtbl->Unacquire(This)
    794 #define IDirectInputJoyConfig_SetCooperativeLevel(This,a,b) (This)->lpVtbl->SetCooperativeLevel(This,a,b)
    795 #define IDirectInputJoyConfig_SendNotify(This) (This)->lpVtbl->SendNotify(This)
    796 #define IDirectInputJoyConfig_EnumTypes(This,a,b) (This)->lpVtbl->EnumTypes(This,a,b)
    797 #define IDirectInputJoyConfig_GetTypeInfo(This,a,b,c) (This)->lpVtbl->GetTypeInfo(This,a,b,c)
    798 #define IDirectInputJoyConfig_SetTypeInfo(This,a,b,c) (This)->lpVtbl->SetTypeInfo(This,a,b,c)
    799 #define IDirectInputJoyConfig_DeleteType(This,a) (This)->lpVtbl->DeleteType(This,a)
    800 #define IDirectInputJoyConfig_GetConfig(This,a,b,c) (This)->lpVtbl->GetConfig(This,a,b,c)
    801 #define IDirectInputJoyConfig_SetConfig(This,a,b,c) (This)->lpVtbl->SetConfig(This,a,b,c)
    802 #define IDirectInputJoyConfig_DeleteConfig(This,a) (This)->lpVtbl->DeleteConfig(This,a)
    803 #define IDirectInputJoyConfig_GetUserValues(This,a,b) (This)->lpVtbl->GetUserValues(This,a,b)
    804 #define IDirectInputJoyConfig_SetUserValues(This,a,b) (This)->lpVtbl->SetUserValues(This,a,b)
    805 #define IDirectInputJoyConfig_AddNewHardware(This,a,b) (This)->lpVtbl->AddNewHardware(This,a,b)
    806 #define IDirectInputJoyConfig_OpenTypeKey(This,a,b,c) (This)->lpVtbl->OpenTypeKey(This,a,b,c)
    807 #define IDirectInputJoyConfig_OpenConfigKey(This,a,b,c) (This)->lpVtbl->OpenConfigKey(This,a,b,c)
    808 #else
    809 /*** IUnknown methods ***/
    810 static inline HRESULT IDirectInputJoyConfig_QueryInterface(IDirectInputJoyConfig* This,REFIID riid,void **ppvObject) {
    811     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    812 }
    813 static inline ULONG IDirectInputJoyConfig_AddRef(IDirectInputJoyConfig* This) {
    814     return This->lpVtbl->AddRef(This);
    815 }
    816 static inline ULONG IDirectInputJoyConfig_Release(IDirectInputJoyConfig* This) {
    817     return This->lpVtbl->Release(This);
    818 }
    819 /*** IDirectInputJoyConfig methods ***/
    820 static inline HRESULT IDirectInputJoyConfig_Acquire(IDirectInputJoyConfig* This) {
    821     return This->lpVtbl->Acquire(This);
    822 }
    823 static inline HRESULT IDirectInputJoyConfig_Unacquire(IDirectInputJoyConfig* This) {
    824     return This->lpVtbl->Unacquire(This);
    825 }
    826 static inline HRESULT IDirectInputJoyConfig_SetCooperativeLevel(IDirectInputJoyConfig* This,HWND a,DWORD b) {
    827     return This->lpVtbl->SetCooperativeLevel(This,a,b);
    828 }
    829 static inline HRESULT IDirectInputJoyConfig_SendNotify(IDirectInputJoyConfig* This) {
    830     return This->lpVtbl->SendNotify(This);
    831 }
    832 static inline HRESULT IDirectInputJoyConfig_EnumTypes(IDirectInputJoyConfig* This,LPVOID a,LPVOID b) {
    833     return This->lpVtbl->EnumTypes(This,a,b);
    834 }
    835 static inline HRESULT IDirectInputJoyConfig_GetTypeInfo(IDirectInputJoyConfig* This,LPCWSTR a,LPDIJOYTYPEINFO b,DWORD c) {
    836     return This->lpVtbl->GetTypeInfo(This,a,b,c);
    837 }
    838 static inline HRESULT IDirectInputJoyConfig_SetTypeInfo(IDirectInputJoyConfig* This,LPCWSTR a,LPCDIJOYTYPEINFO b,DWORD c) {
    839     return This->lpVtbl->SetTypeInfo(This,a,b,c);
    840 }
    841 static inline HRESULT IDirectInputJoyConfig_DeleteType(IDirectInputJoyConfig* This,LPCWSTR a) {
    842     return This->lpVtbl->DeleteType(This,a);
    843 }
    844 static inline HRESULT IDirectInputJoyConfig_GetConfig(IDirectInputJoyConfig* This,UINT a,LPDIJOYCONFIG b,DWORD c) {
    845     return This->lpVtbl->GetConfig(This,a,b,c);
    846 }
    847 static inline HRESULT IDirectInputJoyConfig_SetConfig(IDirectInputJoyConfig* This,UINT a,LPCDIJOYCONFIG b,DWORD c) {
    848     return This->lpVtbl->SetConfig(This,a,b,c);
    849 }
    850 static inline HRESULT IDirectInputJoyConfig_DeleteConfig(IDirectInputJoyConfig* This,UINT a) {
    851     return This->lpVtbl->DeleteConfig(This,a);
    852 }
    853 static inline HRESULT IDirectInputJoyConfig_GetUserValues(IDirectInputJoyConfig* This,LPDIJOYUSERVALUES a,DWORD b) {
    854     return This->lpVtbl->GetUserValues(This,a,b);
    855 }
    856 static inline HRESULT IDirectInputJoyConfig_SetUserValues(IDirectInputJoyConfig* This,LPCDIJOYUSERVALUES a,DWORD b) {
    857     return This->lpVtbl->SetUserValues(This,a,b);
    858 }
    859 static inline HRESULT IDirectInputJoyConfig_AddNewHardware(IDirectInputJoyConfig* This,HWND a,REFGUID b) {
    860     return This->lpVtbl->AddNewHardware(This,a,b);
    861 }
    862 static inline HRESULT IDirectInputJoyConfig_OpenTypeKey(IDirectInputJoyConfig* This,LPCWSTR a,DWORD b,HKEY *c) {
    863     return This->lpVtbl->OpenTypeKey(This,a,b,c);
    864 }
    865 static inline HRESULT IDirectInputJoyConfig_OpenConfigKey(IDirectInputJoyConfig* This,UINT a,DWORD b,HKEY *c) {
    866     return This->lpVtbl->OpenConfigKey(This,a,b,c);
    867 }
    868 #endif
    869 #endif
    870 
    871 #endif
    872 
    873 
    874 #endif  /* __IDirectInputJoyConfig_INTERFACE_DEFINED__ */
    875 
    876 
    877 /*****************************************************************************
    878  * IDirectInputJoyConfig8 interface
    879  */
    880 #ifndef __IDirectInputJoyConfig8_INTERFACE_DEFINED__
    881 #define __IDirectInputJoyConfig8_INTERFACE_DEFINED__
    882 
    883 DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xeb0d7dfa, 0x1990, 0x4f27, 0xb4,0xd6, 0xed,0xf2,0xee,0xc4,0xa4,0x4c);
    884 #if defined(__cplusplus) && !defined(CINTERFACE)
    885 MIDL_INTERFACE("eb0d7dfa-1990-4f27-b4d6-edf2eec4a44c")
    886 IDirectInputJoyConfig8 : public IUnknown
    887 {
    888     virtual HRESULT STDMETHODCALLTYPE Acquire(
    889         ) = 0;
    890 
    891     virtual HRESULT STDMETHODCALLTYPE Unacquire(
    892         ) = 0;
    893 
    894     virtual HRESULT STDMETHODCALLTYPE SetCooperativeLevel(
    895         HWND a,
    896         DWORD b) = 0;
    897 
    898     virtual HRESULT STDMETHODCALLTYPE SendNotify(
    899         ) = 0;
    900 
    901     virtual HRESULT STDMETHODCALLTYPE EnumTypes(
    902         LPVOID a,
    903         LPVOID b) = 0;
    904 
    905     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
    906         LPCWSTR a,
    907         LPDIJOYTYPEINFO b,
    908         DWORD c) = 0;
    909 
    910     virtual HRESULT STDMETHODCALLTYPE SetTypeInfo(
    911         LPCWSTR a,
    912         LPCDIJOYTYPEINFO b,
    913         DWORD c,
    914         LPWSTR d) = 0;
    915 
    916     virtual HRESULT STDMETHODCALLTYPE DeleteType(
    917         LPCWSTR a) = 0;
    918 
    919     virtual HRESULT STDMETHODCALLTYPE GetConfig(
    920         UINT a,
    921         LPDIJOYCONFIG b,
    922         DWORD c) = 0;
    923 
    924     virtual HRESULT STDMETHODCALLTYPE SetConfig(
    925         UINT a,
    926         LPCDIJOYCONFIG b,
    927         DWORD c) = 0;
    928 
    929     virtual HRESULT STDMETHODCALLTYPE DeleteConfig(
    930         UINT a) = 0;
    931 
    932     virtual HRESULT STDMETHODCALLTYPE GetUserValues(
    933         LPDIJOYUSERVALUES a,
    934         DWORD b) = 0;
    935 
    936     virtual HRESULT STDMETHODCALLTYPE SetUserValues(
    937         LPCDIJOYUSERVALUES a,
    938         DWORD b) = 0;
    939 
    940     virtual HRESULT STDMETHODCALLTYPE AddNewHardware(
    941         HWND a,
    942         REFGUID b) = 0;
    943 
    944     virtual HRESULT STDMETHODCALLTYPE OpenTypeKey(
    945         LPCWSTR a,
    946         DWORD b,
    947         HKEY *c) = 0;
    948 
    949     virtual HRESULT STDMETHODCALLTYPE OpenAppStatusKey(
    950         HKEY *a) = 0;
    951 
    952 };
    953 #ifdef __CRT_UUID_DECL
    954 __CRT_UUID_DECL(IDirectInputJoyConfig8, 0xeb0d7dfa, 0x1990, 0x4f27, 0xb4,0xd6, 0xed,0xf2,0xee,0xc4,0xa4,0x4c)
    955 #endif
    956 #else
    957 typedef struct IDirectInputJoyConfig8Vtbl {
    958     BEGIN_INTERFACE
    959 
    960     /*** IUnknown methods ***/
    961     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    962         IDirectInputJoyConfig8 *This,
    963         REFIID riid,
    964         void **ppvObject);
    965 
    966     ULONG (STDMETHODCALLTYPE *AddRef)(
    967         IDirectInputJoyConfig8 *This);
    968 
    969     ULONG (STDMETHODCALLTYPE *Release)(
    970         IDirectInputJoyConfig8 *This);
    971 
    972     /*** IDirectInputJoyConfig8 methods ***/
    973     HRESULT (STDMETHODCALLTYPE *Acquire)(
    974         IDirectInputJoyConfig8 *This);
    975 
    976     HRESULT (STDMETHODCALLTYPE *Unacquire)(
    977         IDirectInputJoyConfig8 *This);
    978 
    979     HRESULT (STDMETHODCALLTYPE *SetCooperativeLevel)(
    980         IDirectInputJoyConfig8 *This,
    981         HWND a,
    982         DWORD b);
    983 
    984     HRESULT (STDMETHODCALLTYPE *SendNotify)(
    985         IDirectInputJoyConfig8 *This);
    986 
    987     HRESULT (STDMETHODCALLTYPE *EnumTypes)(
    988         IDirectInputJoyConfig8 *This,
    989         LPVOID a,
    990         LPVOID b);
    991 
    992     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
    993         IDirectInputJoyConfig8 *This,
    994         LPCWSTR a,
    995         LPDIJOYTYPEINFO b,
    996         DWORD c);
    997 
    998     HRESULT (STDMETHODCALLTYPE *SetTypeInfo)(
    999         IDirectInputJoyConfig8 *This,
   1000         LPCWSTR a,
   1001         LPCDIJOYTYPEINFO b,
   1002         DWORD c,
   1003         LPWSTR d);
   1004 
   1005     HRESULT (STDMETHODCALLTYPE *DeleteType)(
   1006         IDirectInputJoyConfig8 *This,
   1007         LPCWSTR a);
   1008 
   1009     HRESULT (STDMETHODCALLTYPE *GetConfig)(
   1010         IDirectInputJoyConfig8 *This,
   1011         UINT a,
   1012         LPDIJOYCONFIG b,
   1013         DWORD c);
   1014 
   1015     HRESULT (STDMETHODCALLTYPE *SetConfig)(
   1016         IDirectInputJoyConfig8 *This,
   1017         UINT a,
   1018         LPCDIJOYCONFIG b,
   1019         DWORD c);
   1020 
   1021     HRESULT (STDMETHODCALLTYPE *DeleteConfig)(
   1022         IDirectInputJoyConfig8 *This,
   1023         UINT a);
   1024 
   1025     HRESULT (STDMETHODCALLTYPE *GetUserValues)(
   1026         IDirectInputJoyConfig8 *This,
   1027         LPDIJOYUSERVALUES a,
   1028         DWORD b);
   1029 
   1030     HRESULT (STDMETHODCALLTYPE *SetUserValues)(
   1031         IDirectInputJoyConfig8 *This,
   1032         LPCDIJOYUSERVALUES a,
   1033         DWORD b);
   1034 
   1035     HRESULT (STDMETHODCALLTYPE *AddNewHardware)(
   1036         IDirectInputJoyConfig8 *This,
   1037         HWND a,
   1038         REFGUID b);
   1039 
   1040     HRESULT (STDMETHODCALLTYPE *OpenTypeKey)(
   1041         IDirectInputJoyConfig8 *This,
   1042         LPCWSTR a,
   1043         DWORD b,
   1044         HKEY *c);
   1045 
   1046     HRESULT (STDMETHODCALLTYPE *OpenAppStatusKey)(
   1047         IDirectInputJoyConfig8 *This,
   1048         HKEY *a);
   1049 
   1050     END_INTERFACE
   1051 } IDirectInputJoyConfig8Vtbl;
   1052 
   1053 interface IDirectInputJoyConfig8 {
   1054     CONST_VTBL IDirectInputJoyConfig8Vtbl* lpVtbl;
   1055 };
   1056 
   1057 #ifdef COBJMACROS
   1058 #ifndef WIDL_C_INLINE_WRAPPERS
   1059 /*** IUnknown methods ***/
   1060 #define IDirectInputJoyConfig8_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1061 #define IDirectInputJoyConfig8_AddRef(This) (This)->lpVtbl->AddRef(This)
   1062 #define IDirectInputJoyConfig8_Release(This) (This)->lpVtbl->Release(This)
   1063 /*** IDirectInputJoyConfig8 methods ***/
   1064 #define IDirectInputJoyConfig8_Acquire(This) (This)->lpVtbl->Acquire(This)
   1065 #define IDirectInputJoyConfig8_Unacquire(This) (This)->lpVtbl->Unacquire(This)
   1066 #define IDirectInputJoyConfig8_SetCooperativeLevel(This,a,b) (This)->lpVtbl->SetCooperativeLevel(This,a,b)
   1067 #define IDirectInputJoyConfig8_SendNotify(This) (This)->lpVtbl->SendNotify(This)
   1068 #define IDirectInputJoyConfig8_EnumTypes(This,a,b) (This)->lpVtbl->EnumTypes(This,a,b)
   1069 #define IDirectInputJoyConfig8_GetTypeInfo(This,a,b,c) (This)->lpVtbl->GetTypeInfo(This,a,b,c)
   1070 #define IDirectInputJoyConfig8_SetTypeInfo(This,a,b,c,d) (This)->lpVtbl->SetTypeInfo(This,a,b,c,d)
   1071 #define IDirectInputJoyConfig8_DeleteType(This,a) (This)->lpVtbl->DeleteType(This,a)
   1072 #define IDirectInputJoyConfig8_GetConfig(This,a,b,c) (This)->lpVtbl->GetConfig(This,a,b,c)
   1073 #define IDirectInputJoyConfig8_SetConfig(This,a,b,c) (This)->lpVtbl->SetConfig(This,a,b,c)
   1074 #define IDirectInputJoyConfig8_DeleteConfig(This,a) (This)->lpVtbl->DeleteConfig(This,a)
   1075 #define IDirectInputJoyConfig8_GetUserValues(This,a,b) (This)->lpVtbl->GetUserValues(This,a,b)
   1076 #define IDirectInputJoyConfig8_SetUserValues(This,a,b) (This)->lpVtbl->SetUserValues(This,a,b)
   1077 #define IDirectInputJoyConfig8_AddNewHardware(This,a,b) (This)->lpVtbl->AddNewHardware(This,a,b)
   1078 #define IDirectInputJoyConfig8_OpenTypeKey(This,a,b,c) (This)->lpVtbl->OpenTypeKey(This,a,b,c)
   1079 #define IDirectInputJoyConfig8_OpenAppStatusKey(This,a) (This)->lpVtbl->OpenAppStatusKey(This,a)
   1080 #else
   1081 /*** IUnknown methods ***/
   1082 static inline HRESULT IDirectInputJoyConfig8_QueryInterface(IDirectInputJoyConfig8* This,REFIID riid,void **ppvObject) {
   1083     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1084 }
   1085 static inline ULONG IDirectInputJoyConfig8_AddRef(IDirectInputJoyConfig8* This) {
   1086     return This->lpVtbl->AddRef(This);
   1087 }
   1088 static inline ULONG IDirectInputJoyConfig8_Release(IDirectInputJoyConfig8* This) {
   1089     return This->lpVtbl->Release(This);
   1090 }
   1091 /*** IDirectInputJoyConfig8 methods ***/
   1092 static inline HRESULT IDirectInputJoyConfig8_Acquire(IDirectInputJoyConfig8* This) {
   1093     return This->lpVtbl->Acquire(This);
   1094 }
   1095 static inline HRESULT IDirectInputJoyConfig8_Unacquire(IDirectInputJoyConfig8* This) {
   1096     return This->lpVtbl->Unacquire(This);
   1097 }
   1098 static inline HRESULT IDirectInputJoyConfig8_SetCooperativeLevel(IDirectInputJoyConfig8* This,HWND a,DWORD b) {
   1099     return This->lpVtbl->SetCooperativeLevel(This,a,b);
   1100 }
   1101 static inline HRESULT IDirectInputJoyConfig8_SendNotify(IDirectInputJoyConfig8* This) {
   1102     return This->lpVtbl->SendNotify(This);
   1103 }
   1104 static inline HRESULT IDirectInputJoyConfig8_EnumTypes(IDirectInputJoyConfig8* This,LPVOID a,LPVOID b) {
   1105     return This->lpVtbl->EnumTypes(This,a,b);
   1106 }
   1107 static inline HRESULT IDirectInputJoyConfig8_GetTypeInfo(IDirectInputJoyConfig8* This,LPCWSTR a,LPDIJOYTYPEINFO b,DWORD c) {
   1108     return This->lpVtbl->GetTypeInfo(This,a,b,c);
   1109 }
   1110 static inline HRESULT IDirectInputJoyConfig8_SetTypeInfo(IDirectInputJoyConfig8* This,LPCWSTR a,LPCDIJOYTYPEINFO b,DWORD c,LPWSTR d) {
   1111     return This->lpVtbl->SetTypeInfo(This,a,b,c,d);
   1112 }
   1113 static inline HRESULT IDirectInputJoyConfig8_DeleteType(IDirectInputJoyConfig8* This,LPCWSTR a) {
   1114     return This->lpVtbl->DeleteType(This,a);
   1115 }
   1116 static inline HRESULT IDirectInputJoyConfig8_GetConfig(IDirectInputJoyConfig8* This,UINT a,LPDIJOYCONFIG b,DWORD c) {
   1117     return This->lpVtbl->GetConfig(This,a,b,c);
   1118 }
   1119 static inline HRESULT IDirectInputJoyConfig8_SetConfig(IDirectInputJoyConfig8* This,UINT a,LPCDIJOYCONFIG b,DWORD c) {
   1120     return This->lpVtbl->SetConfig(This,a,b,c);
   1121 }
   1122 static inline HRESULT IDirectInputJoyConfig8_DeleteConfig(IDirectInputJoyConfig8* This,UINT a) {
   1123     return This->lpVtbl->DeleteConfig(This,a);
   1124 }
   1125 static inline HRESULT IDirectInputJoyConfig8_GetUserValues(IDirectInputJoyConfig8* This,LPDIJOYUSERVALUES a,DWORD b) {
   1126     return This->lpVtbl->GetUserValues(This,a,b);
   1127 }
   1128 static inline HRESULT IDirectInputJoyConfig8_SetUserValues(IDirectInputJoyConfig8* This,LPCDIJOYUSERVALUES a,DWORD b) {
   1129     return This->lpVtbl->SetUserValues(This,a,b);
   1130 }
   1131 static inline HRESULT IDirectInputJoyConfig8_AddNewHardware(IDirectInputJoyConfig8* This,HWND a,REFGUID b) {
   1132     return This->lpVtbl->AddNewHardware(This,a,b);
   1133 }
   1134 static inline HRESULT IDirectInputJoyConfig8_OpenTypeKey(IDirectInputJoyConfig8* This,LPCWSTR a,DWORD b,HKEY *c) {
   1135     return This->lpVtbl->OpenTypeKey(This,a,b,c);
   1136 }
   1137 static inline HRESULT IDirectInputJoyConfig8_OpenAppStatusKey(IDirectInputJoyConfig8* This,HKEY *a) {
   1138     return This->lpVtbl->OpenAppStatusKey(This,a);
   1139 }
   1140 #endif
   1141 #endif
   1142 
   1143 #endif
   1144 
   1145 
   1146 #endif  /* __IDirectInputJoyConfig8_INTERFACE_DEFINED__ */
   1147 
   1148 #endif /* DIJ_RINGZERO */
   1149 #define DIRECTINPUT_NOTIFICATION_MSGSTRINGA "DIRECTINPUT_NOTIFICATION_MSGSTRING"
   1150 #define DIRECTINPUT_NOTIFICATION_MSGSTRINGW L"DIRECTINPUT_NOTIFICATION_MSGSTRING"
   1151 #define DIRECTINPUT_NOTIFICATION_MSGSTRING __MINGW_NAME_AW(DIRECTINPUT_NOTIFICATION_MSGSTRING)
   1152 #define DIMSGWP_NEWAPPSTART 0x00000001
   1153 #define DIMSGWP_DX8APPSTART 0x00000002
   1154 #define DIMSGWP_DX8MAPPERAPPSTART 0x00000003
   1155 #define DIAPPIDFLAG_NOTIME 0x00000001
   1156 #define DIAPPIDFLAG_NOSIZE 0x00000002
   1157 #define DIRECTINPUT_REGSTR_VAL_APPIDFLAGA "AppIdFlag"
   1158 #define DIRECTINPUT_REGSTR_KEY_LASTAPPA "MostRecentApplication"
   1159 #define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA "MostRecentMapperApplication"
   1160 #define DIRECTINPUT_REGSTR_VAL_VERSIONA "Version"
   1161 #define DIRECTINPUT_REGSTR_VAL_NAMEA "Name"
   1162 #define DIRECTINPUT_REGSTR_VAL_IDA "Id"
   1163 #define DIRECTINPUT_REGSTR_VAL_MAPPERA "UsesMapper"
   1164 #define DIRECTINPUT_REGSTR_VAL_LASTSTARTA "MostRecentStart"
   1165 #define DIRECTINPUT_REGSTR_VAL_APPIDFLAGW L"AppIdFlag"
   1166 #define DIRECTINPUT_REGSTR_KEY_LASTAPPW L"MostRecentApplication"
   1167 #define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW L"MostRecentMapperApplication"
   1168 #define DIRECTINPUT_REGSTR_VAL_VERSIONW L"Version"
   1169 #define DIRECTINPUT_REGSTR_VAL_NAMEW L"Name"
   1170 #define DIRECTINPUT_REGSTR_VAL_IDW L"Id"
   1171 #define DIRECTINPUT_REGSTR_VAL_MAPPERW L"UsesMapper"
   1172 #define DIRECTINPUT_REGSTR_VAL_LASTSTARTW L"MostRecentStart"
   1173 #define DIRECTINPUT_REGSTR_VAL_APPIDFLAG __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_APPIDFLAG)
   1174 #define DIRECTINPUT_REGSTR_KEY_LASTAPP __MINGW_NAME_AW(DIRECTINPUT_REGSTR_KEY_LASTAPP)
   1175 #define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP __MINGW_NAME_AW(DIRECTINPUT_REGSTR_KEY_LASTMAPAPP)
   1176 #define DIRECTINPUT_REGSTR_VAL_VERSION __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_VERSION)
   1177 #define DIRECTINPUT_REGSTR_VAL_NAME __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_NAME)
   1178 #define DIRECTINPUT_REGSTR_VAL_ID __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_ID)
   1179 #define DIRECTINPUT_REGSTR_VAL_MAPPER __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_MAPPER)
   1180 #define DIRECTINPUT_REGSTR_VAL_LASTSTART __MINGW_NAME_AW(DIRECTINPUT_REGSTR_VAL_LASTSTART)
   1181 #define DIERR_NOMOREITEMS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS)
   1182 #define DIERR_DRIVERFIRST __MSABI_LONG(0x80040300)
   1183 #define DIERR_DRIVERLAST __MSABI_LONG(0x800403FF)
   1184 #define DIERR_INVALIDCLASSINSTALLER __MSABI_LONG(0x80040400)
   1185 #define DIERR_CANCELLED __MSABI_LONG(0x80040401)
   1186 #define DIERR_BADINF __MSABI_LONG(0x80040402)
   1187 #define DIDIFT_DELETE __MSABI_LONG(0x01000000)
   1188 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
   1189 /* Begin additional prototypes for all interfaces */
   1190 
   1191 
   1192 /* End additional prototypes */
   1193 
   1194 #ifdef __cplusplus
   1195 }
   1196 #endif
   1197 
   1198 #endif /* __dinputd_h__ */