#ifndef __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H #define __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H #include "winbase.h" #include "dinput.h" /* Device implementation */ typedef struct IDirectInputDevice2AImpl IDirectInputDevice2AImpl; struct IDirectInputDevice2AImpl { ICOM_VFIELD(IDirectInputDevice2A); DWORD ref; GUID guid; }; /* Routines to do DataFormat / WineFormat conversions */ typedef struct { int size; int offset_in; int offset_out; int value; } DataTransform; typedef struct { int size; int internal_format_size; DataTransform *dt; } DataFormat; extern void fill_DataFormat(void *out, void *in, DataFormat *df) ; extern DataFormat *create_DataFormat(DIDATAFORMAT *wine_format, LPCDIDATAFORMAT asked_format, int *offset) ; /* Used to fill events in the queue */ #define GEN_EVENT(offset,data,xtime,seq) \ { \ /* If queue_len > 0, queuing is requested -> TRACE the event queued */ \ if (This->queue_len > 0) { \ DWORD nq; \ TRACE(" queueing %d at offset %d (queue head %d / size %d)\n", \ (int) (data), (int) (offset), \ (int) (This->queue_head), (int) (This->queue_len)); \ \ nq = This->queue_head+1; \ while (nq >= This->queue_len) nq -= This->queue_len; \ if ((offset >= 0) && (nq != This->queue_tail)) { \ This->data_queue[This->queue_head].dwOfs = offset; \ This->data_queue[This->queue_head].dwData = data; \ This->data_queue[This->queue_head].dwTimeStamp = xtime; \ This->data_queue[This->queue_head].dwSequence = seq; \ This->queue_head = nq; \ } \ } \ } /* Various debug tools */ extern void _dump_cooperativelevel_DI(DWORD dwFlags) ; extern void _dump_EnumObjects_flags(DWORD dwFlags) ; extern void _dump_DIPROPHEADER(DIPROPHEADER *diph) ; extern void _dump_OBJECTINSTANCEA(DIDEVICEOBJECTINSTANCEA *ddoi) ; /* And the stubs */ extern HRESULT WINAPI IDirectInputDevice2AImpl_SetDataFormat( LPDIRECTINPUTDEVICE2A iface,LPCDIDATAFORMAT df ) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_SetCooperativeLevel( LPDIRECTINPUTDEVICE2A iface,HWND hwnd,DWORD dwflags ) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_SetEventNotification( LPDIRECTINPUTDEVICE2A iface,HANDLE hnd ) ; extern ULONG WINAPI IDirectInputDevice2AImpl_Release(LPDIRECTINPUTDEVICE2A iface) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_QueryInterface( LPDIRECTINPUTDEVICE2A iface,REFIID riid,LPVOID *ppobj ) ; extern ULONG WINAPI IDirectInputDevice2AImpl_AddRef( LPDIRECTINPUTDEVICE2A iface) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumObjects( LPDIRECTINPUTDEVICE2A iface, LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID lpvRef, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_GetProperty( LPDIRECTINPUTDEVICE2A iface, REFGUID rguid, LPDIPROPHEADER pdiph) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_GetObjectInfo( LPDIRECTINPUTDEVICE2A iface, LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_GetDeviceInfo( LPDIRECTINPUTDEVICE2A iface, LPDIDEVICEINSTANCEA pdidi) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_RunControlPanel( LPDIRECTINPUTDEVICE2A iface, HWND hwndOwner, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_Initialize( LPDIRECTINPUTDEVICE2A iface, HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_CreateEffect( LPDIRECTINPUTDEVICE2A iface, REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdef, LPUNKNOWN pUnkOuter) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumEffects( LPDIRECTINPUTDEVICE2A iface, LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID lpvRef, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_GetEffectInfo( LPDIRECTINPUTDEVICE2A iface, LPDIEFFECTINFOA lpdei, REFGUID rguid) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_GetForceFeedbackState( LPDIRECTINPUTDEVICE2A iface, LPDWORD pdwOut) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_SendForceFeedbackCommand( LPDIRECTINPUTDEVICE2A iface, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumCreatedEffectObjects( LPDIRECTINPUTDEVICE2A iface, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID lpvRef, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_Escape( LPDIRECTINPUTDEVICE2A iface, LPDIEFFESCAPE lpDIEEsc) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_Poll( LPDIRECTINPUTDEVICE2A iface) ; extern HRESULT WINAPI IDirectInputDevice2AImpl_SendDeviceData( LPDIRECTINPUTDEVICE2A iface, DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice7AImpl_EnumEffectsInFile(LPDIRECTINPUTDEVICE7A iface, LPCSTR lpszFileName, LPDIENUMEFFECTSINFILECALLBACK pec, LPVOID pvRef, DWORD dwFlags) ; extern HRESULT WINAPI IDirectInputDevice7AImpl_WriteEffectToFile(LPDIRECTINPUTDEVICE7A iface, LPCSTR lpszFileName, DWORD dwEntries, LPDIFILEEFFECT rgDiFileEft, DWORD dwFlags) ; #endif /* __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H */