dinput.h 103 KB

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