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))
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)
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 );
1491static const IDirectInput7AVtbl
ddi7avt = {
1504static const IDirectInput7WVtbl
ddi7wvt = {
1517static const IDirectInput8AVtbl
ddi8avt = {
1531static 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 BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define DIRECTINPUT_VERSION
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
const GUID IID_IClassFactory
static ULONG WINAPI DICF_Release(LPCLASSFACTORY iface)
static HRESULT WINAPI IDirectInput8AImpl_QueryInterface(LPDIRECTINPUT8A iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectInput8AImpl_EnumDevices(LPDIRECTINPUT8A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags)
static ULONG WINAPI JoyConfig8Impl_Release(IDirectInputJoyConfig8 *iface)
HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riid, LPVOID *ppDI, LPUNKNOWN punkOuter)
static void _dump_EnumDevices_dwFlags(DWORD dwFlags)
static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInputImpl **out)
static const struct dinput_device * dinput_devices[]
static IDirectInputImpl * impl_from_IDirectInput8A(IDirectInput8A *iface)
static HRESULT WINAPI JoyConfig8Impl_GetTypeInfo(IDirectInputJoyConfig8 *iface, LPCWSTR name, LPDIJOYTYPEINFO info, DWORD flags)
static HRESULT WINAPI JoyConfig8Impl_QueryInterface(IDirectInputJoyConfig8 *iface, REFIID riid, void **ppobj)
static HRESULT WINAPI IDirectInputWImpl_GetDeviceStatus(LPDIRECTINPUT7W iface, REFGUID rguid)
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInput8Create(HINSTANCE hinst, DWORD version, REFIID iid, void **out, IUnknown *outer)
static HRESULT WINAPI JoyConfig8Impl_SendNotify(IDirectInputJoyConfig8 *iface)
static ULONG WINAPI JoyConfig8Impl_AddRef(IDirectInputJoyConfig8 *iface)
static HRESULT WINAPI IDirectInputAImpl_EnumDevices(LPDIRECTINPUT7A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags)
HRESULT WINAPI DllRegisterServer(void)
static DWORD diactionformat_priorityW(LPDIACTIONFORMATW lpdiaf, DWORD genre)
static HRESULT WINAPI JoyConfig8Impl_OpenAppStatusKey(IDirectInputJoyConfig8 *iface, PHKEY key)
static CRITICAL_SECTION_DEBUG dinput_critsect_debug
static HRESULT WINAPI DICF_LockServer(LPCLASSFACTORY iface, BOOL dolock)
static HRESULT WINAPI IDirectInput8WImpl_FindDevice(LPDIRECTINPUT8W iface, REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance)
static HRESULT WINAPI IDirectInput8WImpl_EnumDevices(LPDIRECTINPUT8W iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags)
static ULONG WINAPI IDirectInput8AImpl_AddRef(LPDIRECTINPUT8A iface)
static void uninitialize_directinput_instance(IDirectInputImpl *This)
static HRESULT WINAPI IDirectInputAImpl_CreateDevice(LPDIRECTINPUT7A iface, REFGUID rguid, LPDIRECTINPUTDEVICEA *pdev, LPUNKNOWN punk)
static HRESULT initialize_directinput_instance(IDirectInputImpl *This, DWORD dwVersion)
static HRESULT WINAPI IDirectInput8WImpl_ConfigureDevices(LPDIRECTINPUT8W iface, LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData)
static IClassFactoryImpl DINPUT_CF
static HRESULT WINAPI IDirectInput8WImpl_QueryInterface(LPDIRECTINPUT8W iface, REFIID riid, LPVOID *ppobj)
static DWORD diactionformat_priorityA(LPDIACTIONFORMATA lpdiaf, DWORD genre)
static IDirectInputImpl * impl_from_IDirectInput7A(IDirectInput7A *iface)
static const char * dump_semantic(DWORD semantic)
static IDirectInputDeviceImpl * impl_from_IDirectInputDevice8W(IDirectInputDevice8W *iface)
static HRESULT WINAPI IDirectInput8AImpl_CreateDevice(LPDIRECTINPUT8A iface, REFGUID rguid, LPDIRECTINPUTDEVICE8A *pdev, LPUNKNOWN punk)
static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
static HRESULT WINAPI IDirectInput8WImpl_Initialize(LPDIRECTINPUT8W iface, HINSTANCE hinst, DWORD version)
static ULONG WINAPI DICF_AddRef(LPCLASSFACTORY iface)
static HRESULT create_device(IDirectInputImpl *This, REFGUID rguid, REFIID riid, LPVOID *pvOut, BOOL unicode)
static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(LPDIRECTINPUT8W iface, LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags)
static HRESULT WINAPI IDirectInputAImpl_GetDeviceStatus(LPDIRECTINPUT7A iface, REFGUID rguid)
static HRESULT WINAPI JoyConfig8Impl_DeleteType(IDirectInputJoyConfig8 *iface, LPCWSTR name)
static ULONG WINAPI IDirectInput8WImpl_Release(LPDIRECTINPUT8W iface)
static HRESULT WINAPI IDirectInput8AImpl_GetDeviceStatus(LPDIRECTINPUT8A iface, REFGUID rguid)
static HRESULT WINAPI JoyConfig8Impl_OpenTypeKey(IDirectInputJoyConfig8 *iface, LPCWSTR name, DWORD security, PHKEY key)
static HRESULT WINAPI JoyConfig8Impl_SetConfig(IDirectInputJoyConfig8 *iface, UINT id, LPCDIJOYCONFIG info, DWORD flags)
static ULONG WINAPI IDirectInput8WImpl_AddRef(LPDIRECTINPUT8W iface)
static HRESULT WINAPI IDirectInputAImpl_RunControlPanel(LPDIRECTINPUT7A iface, HWND hwndOwner, DWORD dwFlags)
static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(LPDIRECTINPUT8A iface, LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData)
static const IDirectInput7AVtbl ddi7avt
static ULONG WINAPI IDirectInputWImpl_Release(LPDIRECTINPUT7W iface)
static const IDirectInput7WVtbl ddi7wvt
static BOOL should_enumerate_device(const WCHAR *username, DWORD dwFlags, struct list *device_players, REFGUID guid)
static const IClassFactoryVtbl DICF_Vtbl
static BOOL check_hook_thread(void)
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter)
static HRESULT WINAPI JoyConfig8Impl_SetCooperativeLevel(IDirectInputJoyConfig8 *iface, HWND hwnd, DWORD flags)
static HRESULT WINAPI IDirectInputWImpl_RunControlPanel(LPDIRECTINPUT7W iface, HWND hwndOwner, DWORD dwFlags)
HRESULT WINAPI DllUnregisterServer(void)
static HRESULT WINAPI IDirectInput2AImpl_FindDevice(LPDIRECTINPUT7A iface, REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance)
#define enum_callback_wrapper(callback, instance, ref)
static HRESULT WINAPI DICF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
static DWORD WINAPI hook_thread_proc(void *param)
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
static LRESULT CALLBACK LL_hook_proc(int code, WPARAM wparam, LPARAM lparam)
static HRESULT WINAPI IDirectInput7AImpl_CreateDeviceEx(LPDIRECTINPUT7A iface, REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter)
static const IDirectInput8WVtbl ddi8wvt
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI IDirectInput8WImpl_RunControlPanel(LPDIRECTINPUT8W iface, HWND hwndOwner, DWORD dwFlags)
static const IDirectInput8AVtbl ddi8avt
static LRESULT CALLBACK callwndproc_proc(int code, WPARAM wparam, LPARAM lparam)
static HRESULT WINAPI IDirectInputWImpl_Initialize(LPDIRECTINPUT7W iface, HINSTANCE hinst, DWORD x)
static ULONG WINAPI IDirectInput8AImpl_Release(LPDIRECTINPUT8A iface)
static struct list direct_input_list
static HRESULT WINAPI DICF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppobj)
static ULONG WINAPI IDirectInputWImpl_AddRef(LPDIRECTINPUT7W iface)
static HRESULT WINAPI IDirectInput8AImpl_EnumDevicesBySemantics(LPDIRECTINPUT8A iface, LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags)
static IDirectInputImpl * impl_from_IDirectInputJoyConfig8(IDirectInputJoyConfig8 *iface)
static HRESULT WINAPI IDirectInputWImpl_EnumDevices(LPDIRECTINPUT7W iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags)
static HRESULT WINAPI IDirectInputAImpl_Initialize(LPDIRECTINPUT7A iface, HINSTANCE hinst, DWORD version)
static ULONG WINAPI IDirectInputAImpl_AddRef(LPDIRECTINPUT7A iface)
static HRESULT WINAPI JoyConfig8Impl_GetConfig(IDirectInputJoyConfig8 *iface, UINT id, LPDIJOYCONFIG info, DWORD flags)
static HRESULT WINAPI JoyConfig8Impl_GetUserValues(IDirectInputJoyConfig8 *iface, LPDIJOYUSERVALUES info, DWORD flags)
static ULONG WINAPI IDirectInputAImpl_Release(LPDIRECTINPUT7A iface)
static HRESULT WINAPI IDirectInputWImpl_CreateDevice(LPDIRECTINPUT7W iface, REFGUID rguid, LPDIRECTINPUTDEVICEW *pdev, LPUNKNOWN punk)
HINSTANCE DINPUT_instance
static HRESULT WINAPI JoyConfig8Impl_AddNewHardware(IDirectInputJoyConfig8 *iface, HWND hwnd, REFGUID guid)
static HRESULT WINAPI JoyConfig8Impl_SetTypeInfo(IDirectInputJoyConfig8 *iface, LPCWSTR name, LPCDIJOYTYPEINFO info, DWORD flags, LPWSTR new_name)
static HRESULT WINAPI IDirectInput8AImpl_RunControlPanel(LPDIRECTINPUT8A iface, HWND hwndOwner, DWORD dwFlags)
void _copy_diactionformatWtoA(LPDIACTIONFORMATA to, LPDIACTIONFORMATW from)
static HRESULT WINAPI JoyConfig8Impl_SetUserValues(IDirectInputJoyConfig8 *iface, LPCDIJOYUSERVALUES info, DWORD flags)
static HRESULT WINAPI JoyConfig8Impl_Acquire(IDirectInputJoyConfig8 *iface)
static IDirectInputImpl * impl_from_IDirectInput7W(IDirectInput7W *iface)
static HRESULT WINAPI JoyConfig8Impl_EnumTypes(IDirectInputJoyConfig8 *iface, LPDIJOYTYPECALLBACK cb, void *ref)
HRESULT WINAPI DllCanUnloadNow(void)
static HRESULT WINAPI JoyConfig8Impl_Unacquire(IDirectInputJoyConfig8 *iface)
static CRITICAL_SECTION dinput_hook_crit
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
static HRESULT WINAPI IDirectInput8AImpl_FindDevice(LPDIRECTINPUT8A iface, REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance)
static HRESULT WINAPI IDirectInput8AImpl_Initialize(LPDIRECTINPUT8A iface, HINSTANCE hinst, DWORD version)
@ DIRECTINPUT_VERSION_300
@ DIRECTINPUT_VERSION_500
@ DIRECTINPUT_VERSION_50A
@ DIRECTINPUT_VERSION_700
@ DIRECTINPUT_VERSION_602
@ DIRECTINPUT_VERSION_61A
@ DIRECTINPUT_VERSION_5B2
void check_dinput_events(void)
static const IDirectInputJoyConfig8Vtbl JoyConfig8vt
static HRESULT WINAPI IDirectInput8WImpl_GetDeviceStatus(LPDIRECTINPUT8W iface, REFGUID rguid)
static HRESULT WINAPI IDirectInput2WImpl_FindDevice(LPDIRECTINPUT7W iface, REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance)
static const char * _dump_DIDEVTYPE_value(DWORD dwDevType, DWORD dwVersion)
static HRESULT WINAPI IDirectInput7WImpl_CreateDeviceEx(LPDIRECTINPUT7W iface, REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter)
static HANDLE hook_thread_event
static HRESULT WINAPI JoyConfig8Impl_DeleteConfig(IDirectInputJoyConfig8 *iface, UINT id)
void check_dinput_hooks(LPDIRECTINPUTDEVICE8W iface, BOOL acquired)
static HRESULT WINAPI IDirectInput8WImpl_CreateDevice(LPDIRECTINPUT8W iface, REFGUID rguid, LPDIRECTINPUTDEVICE8W *pdev, LPUNKNOWN punk)
HRESULT WINAPI DECLSPEC_HOTPATCH DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter)
static IDirectInputImpl * impl_from_IDirectInput8W(IDirectInput8W *iface)
void _copy_diactionformatAtoW(LPDIACTIONFORMATW to, LPDIACTIONFORMATA from)
static HRESULT WINAPI IDirectInputWImpl_QueryInterface(LPDIRECTINPUT7W iface, REFIID riid, LPVOID *ppobj)
static DWORD hook_thread_id
static HINSTANCE instance
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static const WCHAR version[]
BOOL WINAPI GetModuleHandleExW(IN DWORD dwFlags, IN LPCWSTR lpwModuleName OPTIONAL, OUT HMODULE *phModule)
VOID WINAPI FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
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)
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)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
void __declspec(noinline) __cdecl _free_base(void *const block)
GLint GLint GLint GLint GLint x
GLdouble GLdouble GLdouble r
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
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
const struct dinput_device joystick_linux_device
const struct dinput_device joystick_osx_device
static IPrintDialogCallback callback
static HMODULE MODULEINFO DWORD cb
#define __ASM_GLOBAL_FUNC(name, code)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualCLSID(rclsid1, rclsid2)
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
static void push(calc_node_t *op)
#define DECLSPEC_HOTPATCH
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
LIST_ENTRY ProcessLocksList
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl 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 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw edi esi edx esi movl 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 psrlq mm1 psrlq mm5 paddd mm1 paddd mm5 psrad mm1 psrad mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi subl esi addl edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm1 psrad mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define HRESULT_FROM_WIN32(x)
#define CLASS_E_CLASSNOTAVAILABLE
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HWND WINAPI GetForegroundWindow(void)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
DWORD WINAPI MsgWaitForMultipleObjectsEx(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask, _In_ DWORD dwFlags)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)