Henri Verbeet : user32: Implement GetRawInputDeviceList().

Alexandre Julliard julliard at winehq.org
Thu Oct 18 14:33:12 CDT 2012


Module: wine
Branch: master
Commit: 3ed797b265572751e0b45d6292f54ddb4876ffc8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3ed797b265572751e0b45d6292f54ddb4876ffc8

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Oct 17 23:08:03 2012 +0200

user32: Implement GetRawInputDeviceList().

---

 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 */




More information about the wine-cvs mailing list