Use a more compatible technique to declare COM interfaces methods,
using Microsoft's STDMETHOD macros instead of the Wine-specific
ICOM_METHOD ones.
diff --git a/include/dinput.h b/include/dinput.h
index f9b8363..6697bfa 100644
--- a/include/dinput.h
+++ b/include/dinput.h
@@ -1048,23 +1048,23 @@
/*****************************************************************************
* IDirectInputEffect interface
*/
-#define ICOM_INTERFACE IDirectInputEffect
+#define INTERFACE IDirectInputEffect
#define IDirectInputEffect_METHODS \
- ICOM_METHOD3(HRESULT,Initialize, HINSTANCE,, DWORD,, REFGUID,) \
- ICOM_METHOD1(HRESULT,GetEffectGuid, LPGUID,) \
- ICOM_METHOD2(HRESULT,GetParameters, LPDIEFFECT,, DWORD,) \
- ICOM_METHOD2(HRESULT,SetParameters, LPCDIEFFECT,, DWORD,) \
- ICOM_METHOD2(HRESULT,Start, DWORD,, DWORD,) \
- ICOM_METHOD (HRESULT,Stop) \
- ICOM_METHOD1(HRESULT,GetEffectStatus, LPDWORD,) \
- ICOM_METHOD (HRESULT,Download) \
- ICOM_METHOD (HRESULT,Unload) \
- ICOM_METHOD1(HRESULT,Escape, LPDIEFFESCAPE,)
+ STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE; \
+ STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; \
+ STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE; \
+ STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE; \
+ STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE; \
+ STDMETHOD(Stop)(THIS) PURE; \
+ STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; \
+ STDMETHOD(Download)(THIS) PURE; \
+ STDMETHOD(Unload)(THIS) PURE; \
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
#define IDirectInputEffect_IMETHODS \
IUnknown_IMETHODS \
IDirectInputEffect_METHODS
ICOM_DEFINE(IDirectInputEffect,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputEffect_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1086,28 +1086,28 @@
/*****************************************************************************
* IDirectInputDeviceA interface
*/
-#define ICOM_INTERFACE IDirectInputDeviceA
+#define INTERFACE IDirectInputDeviceA
#define IDirectInputDeviceA_METHODS \
- ICOM_METHOD1(HRESULT,GetCapabilities, LPDIDEVCAPS,lpDIDevCaps) \
- ICOM_METHOD3(HRESULT,EnumObjects, LPDIENUMDEVICEOBJECTSCALLBACKA,lpCallback, LPVOID,pvRef, DWORD,dwFlags) \
- ICOM_METHOD2(HRESULT,GetProperty, REFGUID,rguidProp, LPDIPROPHEADER,pdiph) \
- ICOM_METHOD2(HRESULT,SetProperty, REFGUID,rguidProp, LPCDIPROPHEADER,pdiph) \
- ICOM_METHOD (HRESULT,Acquire) \
- ICOM_METHOD (HRESULT,Unacquire) \
- ICOM_METHOD2(HRESULT,GetDeviceState, DWORD,cbData, LPVOID,lpvData) \
- ICOM_METHOD4(HRESULT,GetDeviceData, DWORD,cbObjectData, LPDIDEVICEOBJECTDATA,rgdod, LPDWORD,pdwInOut, DWORD,dwFlags) \
- ICOM_METHOD1(HRESULT,SetDataFormat, LPCDIDATAFORMAT,lpdf) \
- ICOM_METHOD1(HRESULT,SetEventNotification, HANDLE,hEvent) \
- ICOM_METHOD2(HRESULT,SetCooperativeLevel, HWND,hwnd, DWORD,dwFlags) \
- ICOM_METHOD3(HRESULT,GetObjectInfo, LPDIDEVICEOBJECTINSTANCEA,pdidoi, DWORD,dwObj, DWORD,dwHow) \
- ICOM_METHOD1(HRESULT,GetDeviceInfo, LPDIDEVICEINSTANCEA,pdidi) \
- ICOM_METHOD2(HRESULT,RunControlPanel, HWND,hwndOwner, DWORD,dwFlags) \
- ICOM_METHOD3(HRESULT,Initialize, HINSTANCE,hinst, DWORD,dwVersion, REFGUID,rguid)
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; \
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; \
+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; \
+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; \
+ STDMETHOD(Acquire)(THIS) PURE; \
+ STDMETHOD(Unacquire)(THIS) PURE; \
+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; \
+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; \
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; \
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; \
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; \
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; \
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; \
+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; \
+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
#define IDirectInputDeviceA_IMETHODS \
IUnknown_IMETHODS \
IDirectInputDeviceA_METHODS
ICOM_DEFINE(IDirectInputDeviceA,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputDevice_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1134,22 +1134,22 @@
/*****************************************************************************
* IDirectInputDevice2A interface
*/
-#define ICOM_INTERFACE IDirectInputDevice2A
+#define INTERFACE IDirectInputDevice2A
#define IDirectInputDevice2A_METHODS \
- ICOM_METHOD4(HRESULT,CreateEffect, REFGUID,rguid, LPCDIEFFECT,lpeff, LPDIRECTINPUTEFFECT*,ppdeff, LPUNKNOWN,punkOuter) \
- ICOM_METHOD3(HRESULT,EnumEffects, LPDIENUMEFFECTSCALLBACKA,lpCallback, LPVOID,pvRef, DWORD,dwEffType) \
- ICOM_METHOD2(HRESULT,GetEffectInfo, LPDIEFFECTINFOA,pdei, REFGUID,rguid) \
- ICOM_METHOD1(HRESULT,GetForceFeedbackState, LPDWORD,pdwOut) \
- ICOM_METHOD1(HRESULT,SendForceFeedbackCommand, DWORD,dwFlags) \
- ICOM_METHOD3(HRESULT,EnumCreatedEffectObjects, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,lpCallback, LPVOID,pvRef, DWORD,fl) \
- ICOM_METHOD1(HRESULT,Escape, LPDIEFFESCAPE,pesc) \
- ICOM_METHOD (HRESULT,Poll) \
- ICOM_METHOD4(HRESULT,SendDeviceData, DWORD,cbObjectData, LPCDIDEVICEOBJECTDATA,rgdod, LPDWORD,pdwInOut, DWORD,fl)
+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; \
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; \
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; \
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; \
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; \
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; \
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; \
+ STDMETHOD(Poll)(THIS) PURE; \
+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
#define IDirectInputDevice2A_IMETHODS \
IDirectInputDeviceA_IMETHODS \
IDirectInputDevice2A_METHODS
ICOM_DEFINE(IDirectInputDevice2A,IDirectInputDeviceA)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputDevice2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1186,15 +1186,15 @@
/*****************************************************************************
* IDirectInputDevice7A interface
*/
-#define ICOM_INTERFACE IDirectInputDevice7A
+#define INTERFACE IDirectInputDevice7A
#define IDirectInputDevice7A_METHODS \
- ICOM_METHOD4(HRESULT,EnumEffectsInFile,LPCSTR,lpszFileName,LPDIENUMEFFECTSINFILECALLBACK,pec,LPVOID,pvRef,DWORD,dwFlags) \
- ICOM_METHOD4(HRESULT,WriteEffectToFile,LPCSTR,lpszFileName,DWORD,dwEntries,LPDIFILEEFFECT,rgDiFileEft,DWORD,dwFlags)
+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; \
+ STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
#define IDirectInputDevice7A_IMETHODS \
IDirectInputDevice2A_IMETHODS \
IDirectInputDevice7A_METHODS
ICOM_DEFINE(IDirectInputDevice7A,IDirectInputDevice2A)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputDevice7_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1235,16 +1235,16 @@
/*****************************************************************************
* IDirectInputDevice8A interface
*/
-#define ICOM_INTERFACE IDirectInputDevice8A
+#define INTERFACE IDirectInputDevice8A
#define IDirectInputDevice8A_METHODS \
- ICOM_METHOD3(HRESULT,BuildActionMap, LPDIACTIONFORMATA,lpdiaf, LPCSTR,lpszUserName, DWORD,dwFlags) \
- ICOM_METHOD3(HRESULT,SetActionMap, LPDIACTIONFORMATA,lpdiaf, LPCSTR,lpszUserName, DWORD,dwFlags) \
- ICOM_METHOD1(HRESULT,GetImageInfo, LPDIDEVICEIMAGEINFOHEADERA,lpdiDevImageInfoHeader)
+ STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; \
+ STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; \
+ STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE;
#define IDirectInputDevice8A_IMETHODS \
IDirectInputDevice7A_IMETHODS \
IDirectInputDevice8A_METHODS
ICOM_DEFINE(IDirectInputDevice8A,IDirectInputDevice7A)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputDevice8_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1324,18 +1324,18 @@
/*****************************************************************************
* IDirectInputA interface
*/
-#define ICOM_INTERFACE IDirectInputA
+#define INTERFACE IDirectInputA
#define IDirectInputA_METHODS \
- ICOM_METHOD3(HRESULT,CreateDevice, REFGUID,rguid, LPDIRECTINPUTDEVICEA*,lplpDirectInputDevice, LPUNKNOWN,pUnkOuter) \
- ICOM_METHOD4(HRESULT,EnumDevices, DWORD,dwDevType, LPDIENUMDEVICESCALLBACKA,lpCallback, LPVOID,pvRef, DWORD,dwFlags) \
- ICOM_METHOD1(HRESULT,GetDeviceStatus, REFGUID,rguidInstance) \
- ICOM_METHOD2(HRESULT,RunControlPanel, HWND,hwndOwner, DWORD,dwFlags) \
- ICOM_METHOD2(HRESULT,Initialize, HINSTANCE,hinst, DWORD,dwVersion)
+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; \
+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; \
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; \
+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; \
+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
#define IDirectInputA_IMETHODS \
IUnknown_IMETHODS \
IDirectInputA_METHODS
ICOM_DEFINE(IDirectInputA,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInputA_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1351,14 +1351,14 @@
/*****************************************************************************
* IDirectInput2A interface
*/
-#define ICOM_INTERFACE IDirectInput2A
+#define INTERFACE IDirectInput2A
#define IDirectInput2A_METHODS \
- ICOM_METHOD3(HRESULT,FindDevice, REFGUID,rguid, LPCSTR,pszName, LPGUID,pguidInstance)
+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
#define IDirectInput2A_IMETHODS \
IDirectInputA_IMETHODS \
IDirectInput2A_METHODS
ICOM_DEFINE(IDirectInput2A,IDirectInputA)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInput2A_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1377,14 +1377,14 @@
/*****************************************************************************
* IDirectInput7A interface
*/
-#define ICOM_INTERFACE IDirectInput7A
+#define INTERFACE IDirectInput7A
#define IDirectInput7A_METHODS \
- ICOM_METHOD4(HRESULT,CreateDeviceEx, REFGUID,rguid, REFIID,riid, LPVOID*,pvOut, LPUNKNOWN,lpUnknownOuter)
+ STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
#define IDirectInput7A_IMETHODS \
IDirectInput2A_IMETHODS \
IDirectInput7A_METHODS
ICOM_DEFINE(IDirectInput7A,IDirectInput2A)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInput7A_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
@@ -1406,21 +1406,21 @@
/*****************************************************************************
* IDirectInput8A interface
*/
-#define ICOM_INTERFACE IDirectInput8A
+#define INTERFACE IDirectInput8A
#define IDirectInput8A_METHODS \
- ICOM_METHOD3(HRESULT,CreateDevice, REFGUID,rguid, LPDIRECTINPUTDEVICE8A*,lplpDirectInputDevice, LPUNKNOWN,pUnkOuter) \
- ICOM_METHOD4(HRESULT,EnumDevices, DWORD,dwDevType, LPDIENUMDEVICESCALLBACKA,lpCallback, LPVOID,pvRef, DWORD,dwFlags) \
- ICOM_METHOD1(HRESULT,GetDeviceStatus, REFGUID,rguidInstance) \
- ICOM_METHOD2(HRESULT,RunControlPanel, HWND,hwndOwner, DWORD,dwFlags) \
- ICOM_METHOD2(HRESULT,Initialize, HINSTANCE,hinst, DWORD,dwVersion) \
- ICOM_METHOD3(HRESULT,FindDevice, REFGUID,rguid, LPCSTR,pszName, LPGUID,pguidInstance) \
- ICOM_METHOD5(HRESULT,EnumDevicesBySemantics, LPCSTR,ptszUserName, LPDIACTIONFORMATA,lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA,lpCallback, LPVOID,pvRef, DWORD,dwFlags) \
- ICOM_METHOD4(HRESULT,ConfigureDevices,LPDICONFIGUREDEVICESCALLBACK,lpdiCallback, LPDICONFIGUREDEVICESPARAMSA,lpdiCDParams, DWORD,dwFlags, LPVOID,pvRefData)
+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; \
+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; \
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; \
+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; \
+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; \
+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; \
+ STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; \
+ STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
#define IDirectInput8A_IMETHODS \
IUnknown_IMETHODS \
IDirectInput8A_METHODS
ICOM_DEFINE(IDirectInput8A,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
/*** IUnknown methods ***/
#define IDirectInput8A_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)