Commit 6cd359bc authored by Robert Riggs's avatar Robert Riggs Committed by Alexandre Julliard

Stubs for IDirectInputEffect and IDirectInputDevice2A methods,

as well as AddRef(), GetCapabilites(), EnumObjects(), GetProperty(), GetObjectInfo(), GetDeviceInfo(), Initialize(), and RunControlPanel() for IDirectInputDevice.
parent d22d0718
...@@ -58,6 +58,7 @@ DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9, ...@@ -58,6 +58,7 @@ DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,
typedef struct IDirectInput32A IDirectInput32A,*LPDIRECTINPUT32A; typedef struct IDirectInput32A IDirectInput32A,*LPDIRECTINPUT32A;
typedef struct IDirectInputDevice32A IDirectInputDevice32A,*LPDIRECTINPUTDEVICE32A; typedef struct IDirectInputDevice32A IDirectInputDevice32A,*LPDIRECTINPUTDEVICE32A;
typedef struct IDirectInputEffect IDirectInputEffect,*LPDIRECTINPUTEFFECT;
typedef struct SysKeyboard32A SysKeyboard32A,*LPSYSKEYBOARD32A; typedef struct SysKeyboard32A SysKeyboard32A,*LPSYSKEYBOARD32A;
typedef struct SysMouse32A SysMouse32A,*LPSYSMOUSE32A; typedef struct SysMouse32A SysMouse32A,*LPSYSMOUSE32A;
...@@ -236,6 +237,8 @@ typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32A)(LPCDIDEVICEOBJECTIN ...@@ -236,6 +237,8 @@ typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32A)(LPCDIDEVICEOBJECTIN
typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32W)(LPCDIDEVICEOBJECTINSTANCE32W,LPVOID); typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32W)(LPCDIDEVICEOBJECTINSTANCE32W,LPVOID);
DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK)
typedef BOOL32 (CALLBACK * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
#define DIK_ESCAPE 0x01 #define DIK_ESCAPE 0x01
#define DIK_1 0x02 #define DIK_1 0x02
#define DIK_2 0x03 #define DIK_2 0x03
...@@ -529,6 +532,144 @@ typedef struct DIDEVCAPS { ...@@ -529,6 +532,144 @@ typedef struct DIDEVCAPS {
#define DISCL_FOREGROUND 0x00000004 #define DISCL_FOREGROUND 0x00000004
#define DISCL_BACKGROUND 0x00000008 #define DISCL_BACKGROUND 0x00000008
typedef struct DICONSTANTFORCE {
LONG lMagnitude;
} DICONSTANTFORCE, *LPDICONSTANTFORCE;
typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
typedef struct DIRAMPFORCE {
LONG lStart;
LONG lEnd;
} DIRAMPFORCE, *LPDIRAMPFORCE;
typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
typedef struct DIPERIODIC {
DWORD dwMagnitude;
LONG lOffset;
DWORD dwPhase;
DWORD dwPeriod;
} DIPERIODIC, *LPDIPERIODIC;
typedef const DIPERIODIC *LPCDIPERIODIC;
typedef struct DICONDITION {
LONG lOffset;
LONG lPositiveCoefficient;
LONG lNegativeCoefficient;
DWORD dwPositiveSaturation;
DWORD dwNegativeSaturation;
LONG lDeadBand;
} DICONDITION, *LPDICONDITION;
typedef const DICONDITION *LPCDICONDITION;
typedef struct DICUSTOMFORCE {
DWORD cChannels;
DWORD dwSamplePeriod;
DWORD cSamples;
LPLONG rglForceData;
} DICUSTOMFORCE, *LPDICUSTOMFORCE;
typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
typedef struct DIENVELOPE {
DWORD dwSize;
DWORD dwAttackLevel;
DWORD dwAttackTime;
DWORD dwFadeLevel;
DWORD dwFadeTime;
} DIENVELOPE, *LPDIENVELOPE;
typedef const DIENVELOPE *LPCDIENVELOPE;
typedef struct DIEFFECT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwDuration;
DWORD dwSamplePeriod;
DWORD dwGain;
DWORD dwTriggerButton;
DWORD dwTriggerRepeatInterval;
DWORD cAxes;
LPDWORD rgdwAxes;
LPLONG rglDirection;
LPDIENVELOPE lpEnvelope;
DWORD cbTypeSpecificParams;
LPVOID lpvTypeSpecificParams;
} DIEFFECT, *LPDIEFFECT;
typedef const DIEFFECT *LPCDIEFFECT;
typedef struct DIEFFECTINFOA {
DWORD dwSize;
GUID guid;
DWORD dwEffType;
DWORD dwStaticParams;
DWORD dwDynamicParams;
CHAR tszName[MAX_PATH];
} DIEFFECTINFOA, *LPDIEFFECTINFOA;
typedef struct DIEFFECTINFOW {
DWORD dwSize;
GUID guid;
DWORD dwEffType;
DWORD dwStaticParams;
DWORD dwDynamicParams;
WCHAR tszName[MAX_PATH];
} DIEFFECTINFOW, *LPDIEFFECTINFOW;
#ifdef UNICODE
typedef DIEFFECTINFOW DIEFFECTINFO;
typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
#else
typedef DIEFFECTINFOA DIEFFECTINFO;
typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
#endif
typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
typedef const DIEFFECTINFO *LPCDIEFFECTINFO;
typedef BOOL32 (CALLBACK * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
typedef BOOL32 (CALLBACK * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
typedef struct DIEFFESCAPE {
DWORD dwSize;
DWORD dwCommand;
LPVOID lpvInBuffer;
DWORD cbInBuffer;
LPVOID lpvOutBuffer;
DWORD cbOutBuffer;
} DIEFFESCAPE, *LPDIEFFESCAPE;
#define THIS LPDIRECTINPUTEFFECT this
typedef struct IDirectInputEffect_VTable {
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputEffect methods ***/
STDMETHOD(Initialize)(THIS_ HINSTANCE32,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;
} IDirectInputEffect_VTable,*LPDIRECTINPUTEFFECT_VTABLE;
#undef THIS
struct IDirectInputEffect {
LPDIRECTINPUTEFFECT_VTABLE lpvtbl;
DWORD ref;
GUID guid;
};
#define THIS LPDIRECTINPUTDEVICE32A this #define THIS LPDIRECTINPUTDEVICE32A this
typedef struct IDirectInputDeviceA_VTable { typedef struct IDirectInputDeviceA_VTable {
/*** IUnknown methods ***/ /*** IUnknown methods ***/
...@@ -552,7 +693,19 @@ typedef struct IDirectInputDeviceA_VTable { ...@@ -552,7 +693,19 @@ typedef struct IDirectInputDeviceA_VTable {
STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCE32A) PURE; STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCE32A) PURE;
STDMETHOD(RunControlPanel)(THIS_ HWND32,DWORD) PURE; STDMETHOD(RunControlPanel)(THIS_ HWND32,DWORD) PURE;
STDMETHOD(Initialize)(THIS_ HINSTANCE32,DWORD,REFGUID) PURE; STDMETHOD(Initialize)(THIS_ HINSTANCE32,DWORD,REFGUID) PURE;
} IDirectInputDeviceA_VTable,*LPDIRECTINPUTDEVICEA_VTABLE; /*** IDirectInputDevice2A methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
STDMETHOD(Poll)(THIS) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
} IDirectInputDeviceA_VTable,*LPDIRECTINPUTDEVICEA_VTABLE,
IDirectInputDevice2A_VTable,*LPDIRECTINPUTDEVICE2A_VTABLE;
struct IDirectInputDevice32A { struct IDirectInputDevice32A {
LPDIRECTINPUTDEVICEA_VTABLE lpvtbl; LPDIRECTINPUTDEVICEA_VTABLE lpvtbl;
......
...@@ -418,9 +418,176 @@ static HRESULT WINAPI IDirectInputDeviceA_QueryInterface( ...@@ -418,9 +418,176 @@ static HRESULT WINAPI IDirectInputDeviceA_QueryInterface(
*ppobj = this; *ppobj = this;
return 0; return 0;
} }
if (!memcmp(&IID_IDirectInputDevice2A,riid,sizeof(*riid))) {
this->lpvtbl->fnAddRef(this);
*ppobj = this;
return 0;
}
return E_FAIL; return E_FAIL;
} }
static ULONG WINAPI IDirectInputDeviceA_AddRef(
LPDIRECTINPUTDEVICE32A this)
{
return ++this->ref;
}
static HRESULT WINAPI IDirectInputDeviceA_GetCapabilities(
LPDIRECTINPUTDEVICE32A this,
LPDIDEVCAPS lpDIDevCaps)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_EnumObjects(
LPDIRECTINPUTDEVICE32A this,
LPDIENUMDEVICEOBJECTSCALLBACK32A lpCallback,
LPVOID lpvRef,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
if (lpCallback)
lpCallback(NULL, lpvRef);
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_GetProperty(
LPDIRECTINPUTDEVICE32A this,
REFGUID rguid,
LPDIPROPHEADER pdiph)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_GetObjectInfo(
LPDIRECTINPUTDEVICE32A this,
LPDIDEVICEOBJECTINSTANCE32A pdidoi,
DWORD dwObj,
DWORD dwHow)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_GetDeviceInfo(
LPDIRECTINPUTDEVICE32A this,
LPDIDEVICEINSTANCE32A pdidi)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_RunControlPanel(
LPDIRECTINPUTDEVICE32A this,
HWND32 hwndOwner,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDeviceA_Initialize(
LPDIRECTINPUTDEVICE32A this,
HINSTANCE32 hinst,
DWORD dwVersion,
REFGUID rguid)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
/******************************************************************************
* IDirectInputDevice2A
*/
static HRESULT WINAPI IDirectInputDevice2A_CreateEffect(
LPDIRECTINPUTDEVICE32A this,
REFGUID rguid,
LPCDIEFFECT lpeff,
LPDIRECTINPUTEFFECT *ppdef,
LPUNKNOWN pUnkOuter)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_EnumEffects(
LPDIRECTINPUTDEVICE32A this,
LPDIENUMEFFECTSCALLBACKA lpCallback,
LPVOID lpvRef,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
if (lpCallback)
lpCallback(NULL, lpvRef);
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_GetEffectInfo(
LPDIRECTINPUTDEVICE32A this,
LPDIEFFECTINFOA lpdei,
REFGUID rguid)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_GetForceFeedbackState(
LPDIRECTINPUTDEVICE32A this,
LPDWORD pdwOut)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_SendForceFeedbackCommand(
LPDIRECTINPUTDEVICE32A this,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_EnumCreatedEffectObjects(
LPDIRECTINPUTDEVICE32A this,
LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback,
LPVOID lpvRef,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
if (lpCallback)
lpCallback(NULL, lpvRef);
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_Escape(
LPDIRECTINPUTDEVICE32A this,
LPDIEFFESCAPE lpDIEEsc)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_Poll(
LPDIRECTINPUTDEVICE32A this)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2A_SendDeviceData(
LPDIRECTINPUTDEVICE32A this,
DWORD cbObjectData,
LPDIDEVICEOBJECTDATA rgdod,
LPDWORD pdwInOut,
DWORD dwFlags)
{
FIXME(dinput, "stub!\n");
return DI_OK;
}
/****************************************************************************** /******************************************************************************
* SysMouseA (DInput Mouse support) * SysMouseA (DInput Mouse support)
*/ */
...@@ -537,11 +704,11 @@ static HRESULT WINAPI SysMouseA_GetDeviceState( ...@@ -537,11 +704,11 @@ static HRESULT WINAPI SysMouseA_GetDeviceState(
static IDirectInputDeviceA_VTable SysKeyboardAvt={ static IDirectInputDeviceA_VTable SysKeyboardAvt={
IDirectInputDeviceA_QueryInterface, IDirectInputDeviceA_QueryInterface,
(void*)2, IDirectInputDeviceA_AddRef,
IDirectInputDeviceA_Release, IDirectInputDeviceA_Release,
(void*)4, IDirectInputDeviceA_GetCapabilities,
(void*)5, IDirectInputDeviceA_EnumObjects,
(void*)6, IDirectInputDeviceA_GetProperty,
SysKeyboardA_SetProperty, SysKeyboardA_SetProperty,
SysKeyboardA_Acquire, SysKeyboardA_Acquire,
SysKeyboardA_Unacquire, SysKeyboardA_Unacquire,
...@@ -550,19 +717,28 @@ static IDirectInputDeviceA_VTable SysKeyboardAvt={ ...@@ -550,19 +717,28 @@ static IDirectInputDeviceA_VTable SysKeyboardAvt={
IDirectInputDeviceA_SetDataFormat, IDirectInputDeviceA_SetDataFormat,
IDirectInputDeviceA_SetEventNotification, IDirectInputDeviceA_SetEventNotification,
IDirectInputDeviceA_SetCooperativeLevel, IDirectInputDeviceA_SetCooperativeLevel,
(void*)15, IDirectInputDeviceA_GetObjectInfo,
(void*)16, IDirectInputDeviceA_GetDeviceInfo,
(void*)17, IDirectInputDeviceA_RunControlPanel,
(void*)18, IDirectInputDeviceA_Initialize,
IDirectInputDevice2A_CreateEffect,
IDirectInputDevice2A_EnumEffects,
IDirectInputDevice2A_GetEffectInfo,
IDirectInputDevice2A_GetForceFeedbackState,
IDirectInputDevice2A_SendForceFeedbackCommand,
IDirectInputDevice2A_EnumCreatedEffectObjects,
IDirectInputDevice2A_Escape,
IDirectInputDevice2A_Poll,
IDirectInputDevice2A_SendDeviceData,
}; };
static IDirectInputDeviceA_VTable SysMouseAvt={ static IDirectInputDeviceA_VTable SysMouseAvt={
IDirectInputDeviceA_QueryInterface, IDirectInputDeviceA_QueryInterface,
(void*)2, IDirectInputDeviceA_AddRef,
IDirectInputDeviceA_Release, IDirectInputDeviceA_Release,
(void*)4, IDirectInputDeviceA_GetCapabilities,
(void*)5, IDirectInputDeviceA_EnumObjects,
(void*)6, IDirectInputDeviceA_GetProperty,
IDirectInputDeviceA_SetProperty, IDirectInputDeviceA_SetProperty,
IDirectInputDeviceA_Acquire, IDirectInputDeviceA_Acquire,
IDirectInputDeviceA_Unacquire, IDirectInputDeviceA_Unacquire,
...@@ -571,8 +747,17 @@ static IDirectInputDeviceA_VTable SysMouseAvt={ ...@@ -571,8 +747,17 @@ static IDirectInputDeviceA_VTable SysMouseAvt={
SysMouseA_SetDataFormat, SysMouseA_SetDataFormat,
IDirectInputDeviceA_SetEventNotification, IDirectInputDeviceA_SetEventNotification,
IDirectInputDeviceA_SetCooperativeLevel, IDirectInputDeviceA_SetCooperativeLevel,
(void*)15, IDirectInputDeviceA_GetObjectInfo,
(void*)16, IDirectInputDeviceA_GetDeviceInfo,
(void*)17, IDirectInputDeviceA_RunControlPanel,
(void*)18, IDirectInputDeviceA_Initialize,
IDirectInputDevice2A_CreateEffect,
IDirectInputDevice2A_EnumEffects,
IDirectInputDevice2A_GetEffectInfo,
IDirectInputDevice2A_GetForceFeedbackState,
IDirectInputDevice2A_SendForceFeedbackCommand,
IDirectInputDevice2A_EnumCreatedEffectObjects,
IDirectInputDevice2A_Escape,
IDirectInputDevice2A_Poll,
IDirectInputDevice2A_SendDeviceData,
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment