/*
* Copyright (C) the Wine project
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_DINPUT_H
#define __WINE_DINPUT_H
#define COM_NO_WINDOWS_H
#include <objbase.h>
#ifndef DIRECTINPUT_VERSION
#endif
/* Classes */
DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
/* Interfaces */
DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
/* Predefined object types */
/* Predefined product GUIDs */
/* predefined forcefeedback effects */
#define DIERR_OLDDIRECTINPUTVERSION \
#define DIERR_BETADIRECTINPUTVERSION \
#define DIERR_BADDRIVERVER \
#define DIERR_NOTFOUND \
#define DIERR_OBJECTNOTFOUND \
#define DIERR_NOTINITIALIZED \
#define DIERR_ALREADYINITIALIZED \
#define DIERR_INPUTLOST \
#define DIERR_ACQUIRED \
#define DIERR_NOTACQUIRED \
#ifndef E_PENDING
#endif
#define DIENUM_STOP 0
#define DI8DEVCLASS_ALL 0
#define DIDEVTYPEKEYBOARD_UNKNOWN 0
#define DI8DEVTYPEKEYBOARD_UNKNOWN 0
typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
typedef struct DIDEVICEOBJECTINSTANCEA {
typedef struct DIDEVICEOBJECTINSTANCEW {
typedef struct DIDEVICEINSTANCE_DX3A {
typedef struct DIDEVICEINSTANCE_DX3W {
typedef struct DIDEVICEINSTANCEA {
typedef struct DIDEVICEINSTANCEW {
typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID);
typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID);
#ifndef DIDFT_OPTIONAL
#endif
typedef struct DIDEVICEOBJECTDATA_DX3 {
typedef struct DIDEVICEOBJECTDATA {
typedef struct _DIOBJECTDATAFORMAT {
typedef struct _DIDATAFORMAT {
typedef struct DIPROPHEADER {
#define DIPH_DEVICE 0
typedef struct DIPROPDWORD {
typedef struct DIPROPRANGE {
typedef struct DIPROPCAL {
typedef struct DIPROPGUIDANDPATH {
typedef struct DIPROPSTRING {
/* special property GUIDs */
#ifdef __cplusplus
#else
#endif
#define DIPROPAXISMODE_ABS 0
#define DIPROPAUTOCENTER_OFF 0
#define DIPROPCALIBRATIONMODE_COOKED 0
typedef struct DIDEVCAPS_DX3 {
typedef struct DIDEVCAPS {
/* SetCooperativeLevel dwFlags */
/* Device FF flags */
/* Effect flags */
typedef struct DICONSTANTFORCE {
typedef struct DIRAMPFORCE {
typedef struct DIPERIODIC {
typedef struct DICONDITION {
typedef struct DICUSTOMFORCE {
typedef struct DIENVELOPE {
typedef struct DIEFFECT_DX5 {
typedef struct DIEFFECT {
typedef struct DIEFFECTINFOA {
typedef struct DIEFFECTINFOW {
typedef struct DIEFFESCAPE {
typedef struct DIJOYSTATE {
typedef struct DIJOYSTATE2 {
(n) * sizeof(LONG))
(n) * sizeof(DWORD))
/* DInput 7 structures, types */
typedef struct DIFILEEFFECT {
/* DInput 8 structures and types */
typedef struct _DIACTIONA {
union {
typedef struct _DIACTIONW {
union {
typedef struct _DIACTIONFORMATA {
typedef struct _DIACTIONFORMATW {
#ifndef D3DCOLOR_DEFINED
#define D3DCOLOR_DEFINED
#endif
typedef struct _DICOLORSET {
typedef struct _DICONFIGUREDEVICESPARAMSA {
typedef struct _DICONFIGUREDEVICESPARAMSW {
typedef struct _DIDEVICEIMAGEINFOA {
typedef struct _DIDEVICEIMAGEINFOW {
typedef struct _DIDEVICEIMAGEINFOHEADERA {
typedef struct _DIDEVICEIMAGEINFOHEADERW {
/*****************************************************************************
* IDirectInputEffect interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputEffect methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInputEffect methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInputEffect methods ***/
#endif
/*****************************************************************************
* IDirectInputDeviceA interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceA methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
};
/*****************************************************************************
* IDirectInputDeviceW interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceW methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
#endif
/*****************************************************************************
* IDirectInputDevice2A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceA methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2A methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
};
/*****************************************************************************
* IDirectInputDevice2W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceW methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2W methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
#else
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
#endif
/*****************************************************************************
* IDirectInputDevice7A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceA methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2A methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
/*** IDirectInputDevice7A methods ***/
STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
};
/*****************************************************************************
* IDirectInputDevice7W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceW methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2W methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
/*** IDirectInputDevice7W methods ***/
STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
/*** IDirectInputDevice7 methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
/*** IDirectInputDevice7 methods ***/
#endif
/*****************************************************************************
* IDirectInputDevice8A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceA methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2A methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
/*** IDirectInputDevice7A methods ***/
STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
/*** IDirectInputDevice8A methods ***/
};
/*****************************************************************************
* IDirectInputDevice8W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputDeviceW methods ***/
STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
/*** IDirectInputDevice2W methods ***/
STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
/*** IDirectInputDevice7W methods ***/
STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
/*** IDirectInputDevice8W methods ***/
STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
/*** IDirectInputDevice7 methods ***/
/*** IDirectInputDevice8 methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInputDevice methods ***/
/*** IDirectInputDevice2 methods ***/
/*** IDirectInputDevice7 methods ***/
/*** IDirectInputDevice8 methods ***/
#endif
/* "Standard" Mouse report... */
typedef struct DIMOUSESTATE {
} DIMOUSESTATE;
/* "Standard" Mouse report for DInput 7... */
typedef struct DIMOUSESTATE2 {
#ifdef __cplusplus
extern "C" {
#endif
extern const DIDATAFORMAT c_dfDIMouse;
extern const DIDATAFORMAT c_dfDIKeyboard;
extern const DIDATAFORMAT c_dfDIJoystick;
extern const DIDATAFORMAT c_dfDIJoystick2;
#ifdef __cplusplus
};
#endif
/*****************************************************************************
* IDirectInputA interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputA methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
};
/*****************************************************************************
* IDirectInputW interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputW methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
#endif
/*****************************************************************************
* IDirectInput2A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputA methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
/*** IDirectInput2A methods ***/
};
/*****************************************************************************
* IDirectInput2W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputW methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
/*** IDirectInput2W methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
/*** IDirectInput2 methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
/*** IDirectInput2 methods ***/
#endif
/*****************************************************************************
* IDirectInput7A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputA methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
/*** IDirectInput2A methods ***/
/*** IDirectInput7A methods ***/
STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
};
/*****************************************************************************
* IDirectInput7W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInputW methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
/*** IDirectInput2W methods ***/
/*** IDirectInput7W methods ***/
STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
/*** IDirectInput2 methods ***/
/*** IDirectInput7 methods ***/
#else
/*** IUnknown methods ***/
/*** IDirectInput methods ***/
/*** IDirectInput2 methods ***/
/*** IDirectInput7 methods ***/
#endif
/*****************************************************************************
* IDirectInput8A interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInput8A methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) 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;
};
/*****************************************************************************
* IDirectInput8W interface
*/
{
/*** IUnknown methods ***/
/*** IDirectInput8W methods ***/
STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IDirectInput8 methods ***/
#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)
#else
/*** IUnknown methods ***/
/*** IDirectInput8 methods ***/
#endif
/* Export functions */
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
};
#endif
#endif /* __WINE_DINPUT_H */