From: Henri Verbeet Subject: [PATCH 5/5] user32: Implement GetRawInputDeviceList(). Message-Id: <1350508083-20537-5-git-send-email-hverbeet@codeweavers.com> Date: Wed, 17 Oct 2012 23:08:03 +0200 --- dlls/user32/input.c | 28 ++++++++++++++++++++++------ dlls/user32/message.c | 3 --- dlls/user32/user_private.h | 3 +++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 3ca71a6..76c05df 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -478,14 +478,30 @@ BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii) /****************************************************************** * GetRawInputDeviceList (USER32.@) */ -UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize) +UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_count, UINT size) { - FIXME("(pRawInputDeviceList=%p, puiNumDevices=%p, cbSize=%d) stub!\n", pRawInputDeviceList, puiNumDevices, cbSize); + TRACE("devices %p, device_count %p, size %u.\n", devices, device_count, size); - if(pRawInputDeviceList) - memset(pRawInputDeviceList, 0, sizeof *pRawInputDeviceList); - *puiNumDevices = 0; - return 0; + if (size != sizeof(*devices) || !device_count) return ~0U; + + if (!devices) + { + *device_count = 2; + return 0; + } + + if (*device_count < 2) + { + *device_count = 2; + return ~0U; + } + + devices[0].hDevice = WINE_MOUSE_HANDLE; + devices[0].dwType = RIM_TYPEMOUSE; + devices[1].hDevice = WINE_KEYBOARD_HANDLE; + devices[1].dwType = RIM_TYPEKEYBOARD; + + return 2; } diff --git a/dlls/user32/message.c b/dlls/user32/message.c index fa52207..c1fe036 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -51,9 +51,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msg); WINE_DECLARE_DEBUG_CHANNEL(relay); WINE_DECLARE_DEBUG_CHANNEL(key); -#define WINE_MOUSE_HANDLE ((HANDLE)1) -#define WINE_KEYBOARD_HANDLE ((HANDLE)2) - #define WM_NCMOUSEFIRST WM_NCMOUSEMOVE #define WM_NCMOUSELAST (WM_NCMOUSEFIRST+(WM_MOUSELAST-WM_MOUSEFIRST)) diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h index 3afc7cf..6d717fa 100644 --- a/dlls/user32/user_private.h +++ b/dlls/user32/user_private.h @@ -35,6 +35,9 @@ #define WM_SYSTIMER 0x0118 #define WM_POPUPSYSTEMMENU 0x0313 +#define WINE_MOUSE_HANDLE ((HANDLE)1) +#define WINE_KEYBOARD_HANDLE ((HANDLE)2) + struct window_surface; /* internal messages codes */ -- 1.7.8.6