master
   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__
  23typedef interface IDirectInputEffectDriver IDirectInputEffectDriver;
  24#ifdef __cplusplus
  25interface IDirectInputEffectDriver;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDirectInputJoyConfig_FWD_DEFINED__
  30#define __IDirectInputJoyConfig_FWD_DEFINED__
  31typedef interface IDirectInputJoyConfig IDirectInputJoyConfig;
  32#ifdef __cplusplus
  33interface IDirectInputJoyConfig;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDirectInputJoyConfig8_FWD_DEFINED__
  38#define __IDirectInputJoyConfig8_FWD_DEFINED__
  39typedef interface IDirectInputJoyConfig8 IDirectInputJoyConfig8;
  40#ifdef __cplusplus
  41interface IDirectInputJoyConfig8;
  42#endif /* __cplusplus */
  43#endif
  44
  45/* Headers for imported files */
  46
  47#include <unknwn.h>
  48
  49#ifdef __cplusplus
  50extern "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
  59typedef struct DIOBJECTATTRIBUTES {
  60    DWORD dwFlags;
  61    WORD wUsagePage;
  62    WORD wUsage;
  63} DIOBJECTATTRIBUTES;
  64typedef struct DIOBJECTATTRIBUTES *LPDIOBJECTATTRIBUTES;
  65typedef const DIOBJECTATTRIBUTES *LPCDIOBJECTATTRIBUTES;
  66
  67typedef struct DIFFOBJECTATTRIBUTES {
  68    DWORD dwFFMaxForce;
  69    DWORD dwFFForceResolution;
  70} DIFFOBJECTATTRIBUTES;
  71typedef struct DIFFOBJECTATTRIBUTES *LPDIFFOBJECTATTRIBUTES;
  72typedef const DIFFOBJECTATTRIBUTES *LPCDIFFOBJECTATTRIBUTES;
  73
  74typedef struct DIOBJECTCALIBRATION {
  75    LONG lMin;
  76    LONG lCenter;
  77    LONG lMax;
  78} DIOBJECTCALIBRATION;
  79typedef struct DIOBJECTCALIBRATION *LPDIOBJECTCALIBRATION;
  80typedef const DIOBJECTCALIBRATION *LPCDIOBJECTCALIBRATION;
  81
  82typedef struct DIPOVCALIBRATION {
  83    LONG lMin[5];
  84    LONG lMax[5];
  85} DIPOVCALIBRATION;
  86typedef struct DIPOVCALIBRATION *LPDIPOVCALIBRATION;
  87typedef const DIPOVCALIBRATION *LPCDIPOVCALIBRATION;
  88
  89typedef struct DIEFFECTATTRIBUTES {
  90    DWORD dwEffectId;
  91    DWORD dwEffType;
  92    DWORD dwStaticParams;
  93    DWORD dwDynamicParams;
  94    DWORD dwCoords;
  95} DIEFFECTATTRIBUTES;
  96typedef struct DIEFFECTATTRIBUTES *LPDIEFFECTATTRIBUTES;
  97typedef const DIEFFECTATTRIBUTES *LPCDIEFFECTATTRIBUTES;
  98
  99typedef struct DIFFDEVICEATTRIBUTES {
 100    DWORD dwFlags;
 101    DWORD dwFFSamplePeriod;
 102    DWORD dwFFMinTimeResolution;
 103} DIFFDEVICEATTRIBUTES;
 104typedef struct DIFFDEVICEATTRIBUTES *LPDIFFDEVICEATTRIBUTES;
 105typedef const DIFFDEVICEATTRIBUTES *LPCDIFFDEVICEATTRIBUTES;
 106
 107typedef struct DIDRIVERVERSIONS {
 108    DWORD dwSize;
 109    DWORD dwFirmwareRevision;
 110    DWORD dwHardwareRevision;
 111    DWORD dwFFDriverVersion;
 112} DIDRIVERVERSIONS;
 113typedef struct DIDRIVERVERSIONS *LPDIDRIVERVERSIONS;
 114typedef const DIDRIVERVERSIONS *LPCDIDRIVERVERSIONS;
 115
 116typedef struct DIDEVICESTATE {
 117    DWORD dwSize;
 118    DWORD dwState;
 119    DWORD dwLoad;
 120} DIDEVICESTATE;
 121typedef struct DIDEVICESTATE *LPDIDEVICESTATE;
 122#define DEV_STS_EFFECT_RUNNING DIEGES_PLAYING
 123#ifndef DIJ_RINGZERO
 124
 125typedef struct DIHIDFFINITINFO {
 126    DWORD dwSize;
 127    LPWSTR pwszDeviceInterface;
 128    GUID GuidInstance;
 129} DIHIDFFINITINFO;
 130typedef struct DIHIDFFINITINFO *LPDIHIDFFINITINFO;
 131#if 0
 132typedef struct DIEFFESCAPE DIEFFESCAPE;
 133typedef struct DIEFFESCAPE *LPDIEFFESCAPE;
 134typedef struct DIEFFECT DIEFFECT;
 135typedef struct DIEFFECT *LPDIEFFECT;
 136typedef const DIEFFECT *LPCDIEFFECT;
 137#endif
 138
 139/*****************************************************************************
 140 * IDirectInputEffectDriver interface
 141 */
 142#ifndef __IDirectInputEffectDriver_INTERFACE_DEFINED__
 143#define __IDirectInputEffectDriver_INTERFACE_DEFINED__
 144
 145DEFINE_GUID(IID_IDirectInputEffectDriver, 0x02538130, 0x898f, 0x11d0, 0x9a,0xd0, 0x00,0xa0,0xc9,0xa0,0x6e,0x35);
 146#if defined(__cplusplus) && !defined(CINTERFACE)
 147MIDL_INTERFACE("02538130-898f-11d0-9ad0-00a0c9a06e35")
 148IDirectInputEffectDriver : 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
 208typedef 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
 291interface 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 ***/
 315static inline HRESULT IDirectInputEffectDriver_QueryInterface(IDirectInputEffectDriver* This,REFIID riid,void **ppvObject) {
 316    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 317}
 318static inline ULONG IDirectInputEffectDriver_AddRef(IDirectInputEffectDriver* This) {
 319    return This->lpVtbl->AddRef(This);
 320}
 321static inline ULONG IDirectInputEffectDriver_Release(IDirectInputEffectDriver* This) {
 322    return This->lpVtbl->Release(This);
 323}
 324/*** IDirectInputEffectDriver methods ***/
 325static 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}
 328static inline HRESULT IDirectInputEffectDriver_GetVersions(IDirectInputEffectDriver* This,LPDIDRIVERVERSIONS a) {
 329    return This->lpVtbl->GetVersions(This,a);
 330}
 331static inline HRESULT IDirectInputEffectDriver_Escape(IDirectInputEffectDriver* This,DWORD a,DWORD b,LPDIEFFESCAPE c) {
 332    return This->lpVtbl->Escape(This,a,b,c);
 333}
 334static inline HRESULT IDirectInputEffectDriver_SetGain(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
 335    return This->lpVtbl->SetGain(This,a,b);
 336}
 337static inline HRESULT IDirectInputEffectDriver_SendForceFeedbackCommand(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
 338    return This->lpVtbl->SendForceFeedbackCommand(This,a,b);
 339}
 340static inline HRESULT IDirectInputEffectDriver_GetForceFeedbackState(IDirectInputEffectDriver* This,DWORD a,LPDIDEVICESTATE b) {
 341    return This->lpVtbl->GetForceFeedbackState(This,a,b);
 342}
 343static 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}
 346static inline HRESULT IDirectInputEffectDriver_DestroyEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
 347    return This->lpVtbl->DestroyEffect(This,a,b);
 348}
 349static 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}
 352static inline HRESULT IDirectInputEffectDriver_StopEffect(IDirectInputEffectDriver* This,DWORD a,DWORD b) {
 353    return This->lpVtbl->StopEffect(This,a,b);
 354}
 355static 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
 447typedef struct joypos_tag {
 448    DWORD dwX;
 449    DWORD dwY;
 450    DWORD dwZ;
 451    DWORD dwR;
 452    DWORD dwU;
 453    DWORD dwV;
 454} JOYPOS;
 455typedef struct joypos_tag *LPJOYPOS;
 456
 457typedef struct joyrange_tag {
 458    JOYPOS jpMin;
 459    JOYPOS jpMax;
 460    JOYPOS jpCenter;
 461} JOYRANGE;
 462typedef struct joyrange_tag *LPJOYRANGE;
 463
 464typedef struct joyreguservalues_tag {
 465    DWORD dwTimeOut;
 466    JOYRANGE jrvRanges;
 467    JOYPOS jpDeadZone;
 468} JOYREGUSERVALUES;
 469typedef struct joyreguservalues_tag *LPJOYREGUSERVALUES;
 470
 471typedef struct joyreghwsettings_tag {
 472    DWORD dwFlags;
 473    DWORD dwNumButtons;
 474} JOYREGHWSETTINGS;
 475typedef struct joyreghwsettings_tag *LPJOYHWSETTINGS;
 476
 477typedef struct joyreghwvalues_tag {
 478    JOYRANGE jrvHardware;
 479    DWORD dwPOVValues[4];
 480    DWORD dwCalFlags;
 481} JOYREGHWVALUES;
 482typedef struct joyreghwvalues_tag *LPJOYREGHWVALUES;
 483
 484typedef struct joyreghwconfig_tag {
 485    JOYREGHWSETTINGS hws;
 486    DWORD dwUsageSettings;
 487    JOYREGHWVALUES hwv;
 488    DWORD dwType;
 489    DWORD dwReserved;
 490} JOYREGHWCONFIG;
 491typedef struct joyreghwconfig_tag *LPJOYREGHWCONFIG;
 492
 493typedef struct joycalibrate_tag {
 494    UINT wXbase;
 495    UINT wXdelta;
 496    UINT wYbase;
 497    UINT wYdelta;
 498    UINT wZbase;
 499    UINT wZdelta;
 500} JOYCALIBRATE;
 501typedef struct joycalibrate_tag *LPJOYCALIBRATE;
 502#endif /* JOY_HW_NONE */
 503#ifndef DIJ_RINGZERO
 504#define MAX_JOYSTRING (256)
 505
 506typedef 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
 523typedef struct DIJOYTYPEINFO_DX5 {
 524    DWORD dwSize;
 525    JOYREGHWSETTINGS hws;
 526    CLSID clsidConfig;
 527    WCHAR wszDisplayName[256];
 528    WCHAR wszCallout[260];
 529} DIJOYTYPEINFO_DX5;
 530typedef struct DIJOYTYPEINFO_DX5 *LPDIJOYTYPEINFO_DX5;
 531typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5;
 532
 533typedef 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;
 542typedef struct DIJOYTYPEINFO_DX6 *LPDIJOYTYPEINFO_DX6;
 543typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6;
 544
 545typedef 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;
 556typedef struct DIJOYTYPEINFO *LPDIJOYTYPEINFO;
 557typedef 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
 564typedef 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;
 572typedef struct DIJOYCONFIG_DX5 *LPDIJOYCONFIG_DX5;
 573typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5;
 574
 575typedef 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;
 584typedef struct DIJOYCONFIG *LPDIJOYCONFIG;
 585typedef const DIJOYCONFIG *LPCDIJOYCONFIG;
 586#define DIJU_USERVALUES 0x00000001
 587#define DIJU_GLOBALDRIVER 0x00000002
 588#define DIJU_GAMEPORTEMULATOR 0x00000004
 589
 590typedef struct DIJOYUSERVALUES {
 591    DWORD dwSize;
 592    JOYREGUSERVALUES ruv;
 593    WCHAR wszGlobalDriver[256];
 594    WCHAR wszGameportEmulator[256];
 595} DIJOYUSERVALUES;
 596typedef struct DIJOYUSERVALUES *LPDIJOYUSERVALUES;
 597typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES;
 598DEFINE_GUID(GUID_KeyboardClass, 0x4d36e96b,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
 599DEFINE_GUID(GUID_MediaClass, 0x4d36e96c,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
 600DEFINE_GUID(GUID_MouseClass, 0x4d36e96f,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);
 601DEFINE_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
 609DEFINE_GUID(IID_IDirectInputJoyConfig, 0x1de12ab1, 0xc9f5, 0x11cf, 0xbf,0xc7, 0x44,0x45,0x53,0x54,0x00,0x00);
 610#if defined(__cplusplus) && !defined(CINTERFACE)
 611MIDL_INTERFACE("1de12ab1-c9f5-11cf-bfc7-444553540000")
 612IDirectInputJoyConfig : 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
 684typedef 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
 781interface 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 ***/
 810static inline HRESULT IDirectInputJoyConfig_QueryInterface(IDirectInputJoyConfig* This,REFIID riid,void **ppvObject) {
 811    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 812}
 813static inline ULONG IDirectInputJoyConfig_AddRef(IDirectInputJoyConfig* This) {
 814    return This->lpVtbl->AddRef(This);
 815}
 816static inline ULONG IDirectInputJoyConfig_Release(IDirectInputJoyConfig* This) {
 817    return This->lpVtbl->Release(This);
 818}
 819/*** IDirectInputJoyConfig methods ***/
 820static inline HRESULT IDirectInputJoyConfig_Acquire(IDirectInputJoyConfig* This) {
 821    return This->lpVtbl->Acquire(This);
 822}
 823static inline HRESULT IDirectInputJoyConfig_Unacquire(IDirectInputJoyConfig* This) {
 824    return This->lpVtbl->Unacquire(This);
 825}
 826static inline HRESULT IDirectInputJoyConfig_SetCooperativeLevel(IDirectInputJoyConfig* This,HWND a,DWORD b) {
 827    return This->lpVtbl->SetCooperativeLevel(This,a,b);
 828}
 829static inline HRESULT IDirectInputJoyConfig_SendNotify(IDirectInputJoyConfig* This) {
 830    return This->lpVtbl->SendNotify(This);
 831}
 832static inline HRESULT IDirectInputJoyConfig_EnumTypes(IDirectInputJoyConfig* This,LPVOID a,LPVOID b) {
 833    return This->lpVtbl->EnumTypes(This,a,b);
 834}
 835static inline HRESULT IDirectInputJoyConfig_GetTypeInfo(IDirectInputJoyConfig* This,LPCWSTR a,LPDIJOYTYPEINFO b,DWORD c) {
 836    return This->lpVtbl->GetTypeInfo(This,a,b,c);
 837}
 838static inline HRESULT IDirectInputJoyConfig_SetTypeInfo(IDirectInputJoyConfig* This,LPCWSTR a,LPCDIJOYTYPEINFO b,DWORD c) {
 839    return This->lpVtbl->SetTypeInfo(This,a,b,c);
 840}
 841static inline HRESULT IDirectInputJoyConfig_DeleteType(IDirectInputJoyConfig* This,LPCWSTR a) {
 842    return This->lpVtbl->DeleteType(This,a);
 843}
 844static inline HRESULT IDirectInputJoyConfig_GetConfig(IDirectInputJoyConfig* This,UINT a,LPDIJOYCONFIG b,DWORD c) {
 845    return This->lpVtbl->GetConfig(This,a,b,c);
 846}
 847static inline HRESULT IDirectInputJoyConfig_SetConfig(IDirectInputJoyConfig* This,UINT a,LPCDIJOYCONFIG b,DWORD c) {
 848    return This->lpVtbl->SetConfig(This,a,b,c);
 849}
 850static inline HRESULT IDirectInputJoyConfig_DeleteConfig(IDirectInputJoyConfig* This,UINT a) {
 851    return This->lpVtbl->DeleteConfig(This,a);
 852}
 853static inline HRESULT IDirectInputJoyConfig_GetUserValues(IDirectInputJoyConfig* This,LPDIJOYUSERVALUES a,DWORD b) {
 854    return This->lpVtbl->GetUserValues(This,a,b);
 855}
 856static inline HRESULT IDirectInputJoyConfig_SetUserValues(IDirectInputJoyConfig* This,LPCDIJOYUSERVALUES a,DWORD b) {
 857    return This->lpVtbl->SetUserValues(This,a,b);
 858}
 859static inline HRESULT IDirectInputJoyConfig_AddNewHardware(IDirectInputJoyConfig* This,HWND a,REFGUID b) {
 860    return This->lpVtbl->AddNewHardware(This,a,b);
 861}
 862static inline HRESULT IDirectInputJoyConfig_OpenTypeKey(IDirectInputJoyConfig* This,LPCWSTR a,DWORD b,HKEY *c) {
 863    return This->lpVtbl->OpenTypeKey(This,a,b,c);
 864}
 865static 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
 883DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xeb0d7dfa, 0x1990, 0x4f27, 0xb4,0xd6, 0xed,0xf2,0xee,0xc4,0xa4,0x4c);
 884#if defined(__cplusplus) && !defined(CINTERFACE)
 885MIDL_INTERFACE("eb0d7dfa-1990-4f27-b4d6-edf2eec4a44c")
 886IDirectInputJoyConfig8 : 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
 957typedef 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
1053interface 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 ***/
1082static inline HRESULT IDirectInputJoyConfig8_QueryInterface(IDirectInputJoyConfig8* This,REFIID riid,void **ppvObject) {
1083    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1084}
1085static inline ULONG IDirectInputJoyConfig8_AddRef(IDirectInputJoyConfig8* This) {
1086    return This->lpVtbl->AddRef(This);
1087}
1088static inline ULONG IDirectInputJoyConfig8_Release(IDirectInputJoyConfig8* This) {
1089    return This->lpVtbl->Release(This);
1090}
1091/*** IDirectInputJoyConfig8 methods ***/
1092static inline HRESULT IDirectInputJoyConfig8_Acquire(IDirectInputJoyConfig8* This) {
1093    return This->lpVtbl->Acquire(This);
1094}
1095static inline HRESULT IDirectInputJoyConfig8_Unacquire(IDirectInputJoyConfig8* This) {
1096    return This->lpVtbl->Unacquire(This);
1097}
1098static inline HRESULT IDirectInputJoyConfig8_SetCooperativeLevel(IDirectInputJoyConfig8* This,HWND a,DWORD b) {
1099    return This->lpVtbl->SetCooperativeLevel(This,a,b);
1100}
1101static inline HRESULT IDirectInputJoyConfig8_SendNotify(IDirectInputJoyConfig8* This) {
1102    return This->lpVtbl->SendNotify(This);
1103}
1104static inline HRESULT IDirectInputJoyConfig8_EnumTypes(IDirectInputJoyConfig8* This,LPVOID a,LPVOID b) {
1105    return This->lpVtbl->EnumTypes(This,a,b);
1106}
1107static inline HRESULT IDirectInputJoyConfig8_GetTypeInfo(IDirectInputJoyConfig8* This,LPCWSTR a,LPDIJOYTYPEINFO b,DWORD c) {
1108    return This->lpVtbl->GetTypeInfo(This,a,b,c);
1109}
1110static 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}
1113static inline HRESULT IDirectInputJoyConfig8_DeleteType(IDirectInputJoyConfig8* This,LPCWSTR a) {
1114    return This->lpVtbl->DeleteType(This,a);
1115}
1116static inline HRESULT IDirectInputJoyConfig8_GetConfig(IDirectInputJoyConfig8* This,UINT a,LPDIJOYCONFIG b,DWORD c) {
1117    return This->lpVtbl->GetConfig(This,a,b,c);
1118}
1119static inline HRESULT IDirectInputJoyConfig8_SetConfig(IDirectInputJoyConfig8* This,UINT a,LPCDIJOYCONFIG b,DWORD c) {
1120    return This->lpVtbl->SetConfig(This,a,b,c);
1121}
1122static inline HRESULT IDirectInputJoyConfig8_DeleteConfig(IDirectInputJoyConfig8* This,UINT a) {
1123    return This->lpVtbl->DeleteConfig(This,a);
1124}
1125static inline HRESULT IDirectInputJoyConfig8_GetUserValues(IDirectInputJoyConfig8* This,LPDIJOYUSERVALUES a,DWORD b) {
1126    return This->lpVtbl->GetUserValues(This,a,b);
1127}
1128static inline HRESULT IDirectInputJoyConfig8_SetUserValues(IDirectInputJoyConfig8* This,LPCDIJOYUSERVALUES a,DWORD b) {
1129    return This->lpVtbl->SetUserValues(This,a,b);
1130}
1131static inline HRESULT IDirectInputJoyConfig8_AddNewHardware(IDirectInputJoyConfig8* This,HWND a,REFGUID b) {
1132    return This->lpVtbl->AddNewHardware(This,a,b);
1133}
1134static inline HRESULT IDirectInputJoyConfig8_OpenTypeKey(IDirectInputJoyConfig8* This,LPCWSTR a,DWORD b,HKEY *c) {
1135    return This->lpVtbl->OpenTypeKey(This,a,b,c);
1136}
1137static 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__ */