38 #define NONAMELESSUNION 42 #include "wine/unicode.h" 178 TRACE(
"hinst %p, version %#x, iid %s, out %p, outer %p.\n",
196 ERR(
"Failed to create DirectInput, hr %#x.\n",
hr);
201 if (!outer &&
IsEqualGUID(&IID_IDirectInput8A, iid))
212 if (!outer &&
IsEqualGUID(&IID_IDirectInput8W, iid))
244 if (dwVersion < 0x0800) {
246 case 0:
return "All devices";
251 default:
return "Unknown";
260 default:
return "Unknown";
269 static const struct {
273 #define FE(x) { x, #x} 284 TRACE(
"DIEDFL_ALLDEVICES\n");
296 if((semantic & 0xff000000) == 0xff000000)
298 else if((semantic & 0x82000000) == 0x82000000)
300 else if((semantic & 0x81000000) == 0x81000000)
312 TRACE(
"diaf.dwSize = %d\n", lpdiActionFormat->
dwSize);
318 TRACE(
"diaf.dwGenre = 0x%08x\n", lpdiActionFormat->
dwGenre);
323 TRACE(
"diaf.ftTimeStamp ...\n");
324 TRACE(
"diaf.dwCRC = 0x%x\n", lpdiActionFormat->
dwCRC);
328 TRACE(
"diaf.rgoAction[%u]:\n",
i);
402 DWORD priorityFlags = 0;
409 return priorityFlags;
415 DWORD priorityFlags = 0;
422 return priorityFlags;
425 #if defined __i386__ && defined _MSC_VER 439 #elif defined __i386__ && defined __GNUC__ 443 __ASM_CFI(
".cfi_adjust_cfa_offset 4\n\t")
446 __ASM_CFI(
".cfi_def_cfa_register %ebp\n\t")
455 #define enum_callback_wrapper(callback, instance, ref) (callback)((instance), (ref)) 471 TRACE(
"(this=%p,0x%04x '%s',%p,%p,0x%04x)\n",
481 if (!
This->initialized)
489 devInstance.
dwSize =
sizeof(devInstance);
512 TRACE(
"(this=%p,0x%04x '%s',%p,%p,0x%04x)\n",
522 if (!
This->initialized)
528 devInstance.
dwSize =
sizeof(devInstance);
588 #if DIRECTINPUT_VERSION == 0x0700 593 *ppobj = &
This->IDirectInput7A_iface;
597 *ppobj = &
This->IDirectInput7W_iface;
602 *ppobj = &
This->IDirectInput8A_iface;
605 *ppobj = &
This->IDirectInput8W_iface;
610 *ppobj = &
This->IDirectInputJoyConfig8_iface;
614 IUnknown_AddRef( (
IUnknown*)*ppobj );
630 if (!
This->initialized)
632 This->dwVersion = dwVersion;
633 This->evsequence = 1;
636 This->crit.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": IDirectInputImpl*->crit");
660 if (
This->initialized)
674 This->crit.DebugInfo->Spare[0] = 0;
728 if (!
This->initialized)
734 IUnknown_Release(
device );
749 WCHAR control_exeW[] = {
'c',
'o',
'n',
't',
'r',
'o',
'l',
'.',
'e',
'x',
'e',0};
757 if (hwndOwner && !
IsWindow(hwndOwner))
763 if (!
This->initialized)
805 if (!rguid || !pvOut)
808 if (!
This->initialized)
994 should_enumerate =
FALSE;
1009 should_enumerate =
FALSE;
1023 return should_enumerate;
1032 static REFGUID guids[2] = { &GUID_SysKeyboard, &GUID_SysMouse };
1037 DWORD callbackFlags;
1039 int device_count = 0;
1042 WCHAR *username_w = 0;
1044 FIXME(
"(this=%p,%s,%p,%p,%p,%04x): semi-stub\n",
This,
debugstr_a(ptszUserName), lpdiActionFormat,
1046 #define X(x) if (dwFlags & x) FIXME("\tdwFlags |= "#x"\n"); 1057 didevi.
dwSize =
sizeof(didevi);
1080 if (enumSuccess ==
S_OK &&
1087 didevis[device_count-1] = didevi;
1092 remain = device_count;
1103 for (
i = 0;
i < device_count;
i++)
1108 if (lpCallback(&didevis[
i], lpdid, callbackFlags, --remain, pvRef) ==
DIENUM_STOP)
1136 if (lpCallback(&didevi, lpdid, callbackFlags, --remain, pvRef) ==
DIENUM_STOP)
1156 static REFGUID guids[2] = { &GUID_SysKeyboard, &GUID_SysMouse };
1161 DWORD callbackFlags;
1163 int device_count = 0;
1167 FIXME(
"(this=%p,%s,%p,%p,%p,%04x): semi-stub\n",
This,
debugstr_w(ptszUserName), lpdiActionFormat,
1170 didevi.
dwSize =
sizeof(didevi);
1185 if (enumSuccess ==
S_OK &&
1192 didevis[device_count-1] = didevi;
1197 remain = device_count;
1208 for (
i = 0;
i < device_count;
i++)
1213 if (lpCallback(&didevis[
i], lpdid, callbackFlags, --remain, pvRef) ==
DIENUM_STOP)
1234 if (lpCallback(&didevi, lpdid, callbackFlags, --remain, pvRef) ==
DIENUM_STOP)
1249 FIXME(
"(this=%p,%p,%p,%04x,%p): stub\n",
This, lpdiCallback, lpdiCDParams,
dwFlags, pvRefData);
1266 FIXME(
"(this=%p,%p,%p,%04x,%p): stub\n",
This, lpdiCallback, lpdiCDParams,
dwFlags, pvRefData);
1273 diCDParamsW.
hwnd = lpdiCDParams->
hwnd;
1286 total_len +=
len + 2;
1294 to[total_len - 1] = 0;
1359 FIXME(
"(%p): stub!\n", iface );
1365 FIXME(
"(%p): stub!\n", iface );
1377 FIXME(
"(%p): stub!\n", iface );
1383 FIXME(
"(%p)->(%p, %p): stub!\n", iface,
cb,
ref );
1413 FIXME(
"(%p)->(%d, %p, 0x%08x): semi-stub!\n", iface,
id,
info,
flags);
1415 #define X(x) if (flags & x) FIXME("\tflags |= "#x"\n"); 1430 dev.dwSize =
sizeof(
dev);
1437 info->guidInstance =
dev.guidInstance;
1451 FIXME(
"(%p)->(%d, %p, 0x%08x): stub!\n", iface,
id,
info,
flags );
1457 FIXME(
"(%p)->(%d): stub!\n", iface,
id );
1487 FIXME(
"(%p)->(%p): stub!\n", iface,
key );
1491 static const IDirectInput7AVtbl
ddi7avt = {
1504 static const IDirectInput7WVtbl
ddi7wvt = {
1517 static const IDirectInput8AVtbl
ddi8avt = {
1531 static const IDirectInput8WVtbl
ddi8wvt = {
1626 FIXME(
"(%p)->(%d),stub!\n",
This,dolock);
1697 if (
dev->acquired &&
dev->event_proc)
1730 if (!
dev->acquired)
continue;
1732 if (
msg->hwnd ==
dev->win &&
msg->hwnd != foreground)
1734 TRACE(
"%p window is not foreground - unacquiring %p\n",
dev->win,
dev );
1756 UINT kbd_cnt = 0, mice_cnt = 0;
1762 TRACE(
"Processing hook change notification lp:%ld\n",
msg.lParam );
1764 if (!
msg.wParam && !
msg.lParam)
1782 if (!
dev->acquired || !
dev->event_proc)
continue;
1802 if (mice_cnt && !mouse_hook)
1804 else if (!mice_cnt && mouse_hook)
1824 0, 0, { (
DWORD_PTR)(__FILE__
": dinput_hook_crit") }
1830 static HANDLE hook_thread;
1865 static HHOOK callwndproc_hook;
1866 static ULONG foreground_cnt;
1879 if (foreground_cnt && !callwndproc_hook)
1882 else if (!foreground_cnt && callwndproc_hook)
1885 callwndproc_hook =
NULL;
static HRESULT WINAPI IDirectInputAImpl_GetDeviceStatus(LPDIRECTINPUT7A iface, REFGUID rguid)
static HRESULT WINAPI JoyConfig8Impl_AddNewHardware(IDirectInputJoyConfig8 *iface, HWND hwnd, REFGUID guid)
static HRESULT WINAPI IDirectInput8WImpl_FindDevice(LPDIRECTINPUT8W iface, REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance)
static const IDirectInput7AVtbl ddi7avt
void check_dinput_events(void)
static ULONG WINAPI JoyConfig8Impl_AddRef(IDirectInputJoyConfig8 *iface)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HRESULT WINAPI DllUnregisterServer(void)
#define HRESULT_FROM_WIN32(x)
static HRESULT WINAPI DICF_LockServer(LPCLASSFACTORY iface, BOOL dolock)
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
BOOL WINAPI IsWindow(_In_opt_ HWND)
static HRESULT WINAPI IDirectInput2AImpl_FindDevice(LPDIRECTINPUT7A iface, REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance)
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 mm1 mm5 paddd mm0 paddd mm4 mm0 mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm0 mm0 packssdw mm0 movd eax movw edi esi edx esi ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 mm1 mm5 paddd mm1 paddd mm5 mm1 mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm1 mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
static const char * _dump_DIDEVTYPE_value(DWORD dwDevType, DWORD dwVersion)
static HRESULT WINAPI IDirectInputWImpl_EnumDevices(LPDIRECTINPUT7W iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags)
GLdouble GLdouble GLdouble r
static HRESULT WINAPI JoyConfig8Impl_SendNotify(IDirectInputJoyConfig8 *iface)
static HRESULT WINAPI JoyConfig8Impl_GetTypeInfo(IDirectInputJoyConfig8 *iface, LPCWSTR name, LPDIJOYTYPEINFO info, DWORD flags)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
static HRESULT WINAPI JoyConfig8Impl_Acquire(IDirectInputJoyConfig8 *iface)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
static CRITICAL_SECTION dinput_hook_crit
__WINE_SERVER_LIST_INLINE void list_add_head(struct list *list, struct list *elem)
static IDirectInputImpl * impl_from_IDirectInput8A(IDirectInput8A *iface)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
static HRESULT WINAPI IDirectInputWImpl_QueryInterface(LPDIRECTINPUT7W iface, REFIID riid, LPVOID *ppobj)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
static ULONG WINAPI IDirectInputWImpl_AddRef(LPDIRECTINPUT7W iface)
GLint GLint GLint GLint GLint x
static BOOL should_enumerate_device(const WCHAR *username, DWORD dwFlags, struct list *device_players, REFGUID guid)
#define DLL_PROCESS_ATTACH
HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riid, LPVOID *ppDI, LPUNKNOWN punkOuter)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static HRESULT WINAPI IDirectInput8WImpl_EnumDevices(LPDIRECTINPUT8W iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags)
HINSTANCE DINPUT_instance
static HRESULT initialize_directinput_instance(IDirectInputImpl *This, DWORD dwVersion)
#define CLASS_E_CLASSNOTAVAILABLE
void check_dinput_hooks(LPDIRECTINPUTDEVICE8W iface, BOOL acquired)
static ULONG WINAPI IDirectInput8WImpl_Release(LPDIRECTINPUT8W iface)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
static HRESULT WINAPI JoyConfig8Impl_GetConfig(IDirectInputJoyConfig8 *iface, UINT id, LPDIJOYCONFIG info, DWORD flags)
struct tagIClassFactoryImpl IClassFactoryImpl
static HRESULT WINAPI IDirectInput8AImpl_EnumDevicesBySemantics(LPDIRECTINPUT8A iface, LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags)
VOID WINAPI FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode)
static DWORD WINAPI hook_thread_proc(void *param)
#define __ASM_GLOBAL_FUNC(name, code)
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInput8Create(HINSTANCE hinst, DWORD version, REFIID iid, void **out, IUnknown *outer)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
static HRESULT WINAPI IDirectInput8AImpl_EnumDevices(LPDIRECTINPUT8A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags)
static DWORD diactionformat_priorityW(LPDIACTIONFORMATW lpdiaf, DWORD genre)
static const IDirectInput7WVtbl ddi7wvt
static HRESULT WINAPI JoyConfig8Impl_SetTypeInfo(IDirectInputJoyConfig8 *iface, LPCWSTR name, LPCDIJOYTYPEINFO info, DWORD flags, LPWSTR new_name)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
DWORD WINAPI MsgWaitForMultipleObjectsEx(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask, _In_ DWORD dwFlags)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI IDirectInput7AImpl_CreateDeviceEx(LPDIRECTINPUT7A iface, REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter)
static HRESULT WINAPI IDirectInputAImpl_Initialize(LPDIRECTINPUT7A iface, HINSTANCE hinst, DWORD version)
static HRESULT WINAPI IDirectInputAImpl_EnumDevices(LPDIRECTINPUT7A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags)
static HRESULT WINAPI IDirectInput8AImpl_GetDeviceStatus(LPDIRECTINPUT8A iface, REFGUID rguid)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
static HRESULT WINAPI JoyConfig8Impl_SetConfig(IDirectInputJoyConfig8 *iface, UINT id, LPCDIJOYCONFIG info, DWORD flags)
static UINT WPARAM LPARAM lparam
static HRESULT WINAPI IDirectInput8AImpl_CreateDevice(LPDIRECTINPUT8A iface, REFGUID rguid, LPDIRECTINPUTDEVICE8A *pdev, LPUNKNOWN punk)
static HRESULT WINAPI IDirectInput8AImpl_FindDevice(LPDIRECTINPUT8A iface, REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance)
static IClassFactoryImpl DINPUT_CF
struct _EXCEPTION_POINTERS *_CRTIMP __declspec(noreturn) void __cdecl terminate(void)
static HRESULT WINAPI IDirectInputAImpl_CreateDevice(LPDIRECTINPUT7A iface, REFGUID rguid, LPDIRECTINPUTDEVICEA *pdev, LPUNKNOWN punk)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
static HRESULT WINAPI JoyConfig8Impl_QueryInterface(IDirectInputJoyConfig8 *iface, REFIID riid, void **ppobj)
static CRITICAL_SECTION_DEBUG dinput_critsect_debug
static const WCHAR version[]
static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(LPDIRECTINPUT8W iface, LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags)
static HRESULT WINAPI IDirectInput8WImpl_QueryInterface(LPDIRECTINPUT8W iface, REFIID riid, LPVOID *ppobj)
static IDirectInputImpl * impl_from_IDirectInputJoyConfig8(IDirectInputJoyConfig8 *iface)
static DWORD hook_thread_id
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
DWORD WINAPI GetCurrentThreadId(VOID)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
#define DLL_PROCESS_DETACH
static BOOL check_hook_thread(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define DECLSPEC_HOTPATCH
static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, REFIID riid, LPVOID *ppobj)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
static HRESULT WINAPI JoyConfig8Impl_OpenAppStatusKey(IDirectInputJoyConfig8 *iface, PHKEY key)
static HRESULT WINAPI IDirectInput8WImpl_Initialize(LPDIRECTINPUT8W iface, HINSTANCE hinst, DWORD version)
static HRESULT WINAPI JoyConfig8Impl_SetUserValues(IDirectInputJoyConfig8 *iface, LPCDIJOYUSERVALUES info, DWORD flags)
static HRESULT WINAPI IDirectInput8AImpl_Initialize(LPDIRECTINPUT8A iface, HINSTANCE hinst, DWORD version)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static const IDirectInput8WVtbl ddi8wvt
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define enum_callback_wrapper(callback, instance, ref)
static IDirectInputImpl * impl_from_IDirectInput7A(IDirectInput7A *iface)
static HRESULT WINAPI JoyConfig8Impl_EnumTypes(IDirectInputJoyConfig8 *iface, LPDIJOYTYPECALLBACK cb, void *ref)
#define DIRECTINPUT_VERSION
WINE_DEFAULT_DEBUG_CHANNEL(dinput)
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
static const struct dinput_device * dinput_devices[]
#define InterlockedDecrement
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter)
static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInputImpl **out)
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
static IDirectInputImpl * impl_from_IDirectInput8W(IDirectInput8W *iface)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
static HRESULT WINAPI JoyConfig8Impl_DeleteType(IDirectInputJoyConfig8 *iface, LPCWSTR name)
static ULONG WINAPI IDirectInput8WImpl_AddRef(LPDIRECTINPUT8W iface)
static ULONG WINAPI IDirectInputWImpl_Release(LPDIRECTINPUT7W iface)
static IDirectInputImpl * impl_from_IDirectInput7W(IDirectInput7W *iface)
static HRESULT WINAPI IDirectInputWImpl_Initialize(LPDIRECTINPUT7W iface, HINSTANCE hinst, DWORD x)
LIST_ENTRY ProcessLocksList
static ULONG WINAPI DICF_Release(LPCLASSFACTORY iface)
static HRESULT WINAPI IDirectInputWImpl_CreateDevice(LPDIRECTINPUT7W iface, REFGUID rguid, LPDIRECTINPUTDEVICEW *pdev, LPUNKNOWN punk)
static HRESULT WINAPI IDirectInput8AImpl_QueryInterface(LPDIRECTINPUT8A iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectInput8WImpl_ConfigureDevices(LPDIRECTINPUT8W iface, LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData)
static HRESULT WINAPI IDirectInput7WImpl_CreateDeviceEx(LPDIRECTINPUT7W iface, REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
static void _dump_EnumDevices_dwFlags(DWORD dwFlags)
static const IDirectInputJoyConfig8Vtbl JoyConfig8vt
static HRESULT WINAPI IDirectInput8WImpl_GetDeviceStatus(LPDIRECTINPUT8W iface, REFGUID rguid)
static ULONG WINAPI IDirectInputAImpl_Release(LPDIRECTINPUT7A iface)
static const IClassFactoryVtbl DICF_Vtbl
static const IDirectInput8AVtbl ddi8avt
__WINE_SERVER_LIST_INLINE int list_empty(const struct list *list)
BOOL WINAPI GetModuleHandleExW(IN DWORD dwFlags, IN LPCWSTR lpwModuleName OPTIONAL, OUT HMODULE *phModule)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)
static HRESULT WINAPI JoyConfig8Impl_GetUserValues(IDirectInputJoyConfig8 *iface, LPDIJOYUSERVALUES info, DWORD flags)
void _copy_diactionformatAtoW(LPDIACTIONFORMATW to, LPDIACTIONFORMATA from)
static HRESULT WINAPI JoyConfig8Impl_SetCooperativeLevel(IDirectInputJoyConfig8 *iface, HWND hwnd, DWORD flags)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define InterlockedIncrement
static const char * dump_semantic(DWORD semantic)
static HRESULT WINAPI JoyConfig8Impl_Unacquire(IDirectInputJoyConfig8 *iface)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static IDirectInputDeviceImpl * impl_from_IDirectInputDevice8W(IDirectInputDevice8W *iface)
static HRESULT WINAPI IDirectInputWImpl_RunControlPanel(LPDIRECTINPUT7W iface, HWND hwndOwner, DWORD dwFlags)
const struct dinput_device joystick_osx_device
static HINSTANCE instance
void _copy_diactionformatWtoA(LPDIACTIONFORMATA to, LPDIACTIONFORMATW from)
static ULONG WINAPI IDirectInput8AImpl_AddRef(LPDIRECTINPUT8A iface)
static HRESULT WINAPI JoyConfig8Impl_OpenTypeKey(IDirectInputJoyConfig8 *iface, LPCWSTR name, DWORD security, PHKEY key)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
HWND WINAPI GetForegroundWindow(void)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define MultiByteToWideChar
static LRESULT CALLBACK LL_hook_proc(int code, WPARAM wparam, LPARAM lparam)
static ULONG WINAPI JoyConfig8Impl_Release(IDirectInputJoyConfig8 *iface)
static HMODULE MODULEINFO DWORD cb
static DWORD diactionformat_priorityA(LPDIACTIONFORMATA lpdiaf, DWORD genre)
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
static HRESULT WINAPI IDirectInputWImpl_GetDeviceStatus(LPDIRECTINPUT7W iface, REFGUID rguid)
static HRESULT WINAPI IDirectInput8AImpl_RunControlPanel(LPDIRECTINPUT8A iface, HWND hwndOwner, DWORD dwFlags)
static HRESULT WINAPI JoyConfig8Impl_DeleteConfig(IDirectInputJoyConfig8 *iface, UINT id)
static HRESULT WINAPI IDirectInput8WImpl_RunControlPanel(LPDIRECTINPUT8W iface, HWND hwndOwner, DWORD dwFlags)
static HRESULT WINAPI IDirectInput8WImpl_CreateDevice(LPDIRECTINPUT8W iface, REFGUID rguid, LPDIRECTINPUTDEVICE8W *pdev, LPUNKNOWN punk)
HRESULT WINAPI DllRegisterServer(void)
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
static ULONG WINAPI DICF_AddRef(LPCLASSFACTORY iface)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
static IPrintDialogCallback callback
static HRESULT WINAPI IDirectInputAImpl_RunControlPanel(LPDIRECTINPUT7A iface, HWND hwndOwner, DWORD dwFlags)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static struct list direct_input_list
static HRESULT WINAPI DICF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppobj)
static void uninitialize_directinput_instance(IDirectInputImpl *This)
static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
static void push(calc_node_t *op)
HRESULT WINAPI DllCanUnloadNow(void)
const GUID IID_IClassFactory
#define IsEqualCLSID(rclsid1, rclsid2)
static HANDLE hook_thread_event
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static ULONG WINAPI IDirectInputAImpl_AddRef(LPDIRECTINPUT7A iface)
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter)
#define HeapFree(x, y, z)
static LRESULT CALLBACK callwndproc_proc(int code, WPARAM wparam, LPARAM lparam)
static ULONG WINAPI IDirectInput8AImpl_Release(LPDIRECTINPUT8A iface)
static HRESULT WINAPI IDirectInput2WImpl_FindDevice(LPDIRECTINPUT7W iface, REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance)
static HRESULT WINAPI DICF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
static UINT WPARAM wparam
static HRESULT create_device(IDirectInputImpl *This, REFGUID rguid, REFIID riid, LPVOID *pvOut, BOOL unicode)
static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(LPDIRECTINPUT8A iface, LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData)
static BOOL heap_free(void *mem)
GLuint const GLchar * name
const struct dinput_device joystick_linux_device