Commit e0ba6d8f authored by Bruno Jesus's avatar Bruno Jesus Committed by Alexandre Julliard

user32: Set the expected errors in GetRawInputDeviceList.

parent 530d269e
...@@ -496,7 +496,17 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun ...@@ -496,7 +496,17 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
{ {
TRACE("devices %p, device_count %p, size %u.\n", devices, device_count, size); TRACE("devices %p, device_count %p, size %u.\n", devices, device_count, size);
if (size != sizeof(*devices) || !device_count) return ~0U; if (size != sizeof(*devices))
{
SetLastError(ERROR_INVALID_PARAMETER);
return ~0U;
}
if (!device_count)
{
SetLastError(ERROR_NOACCESS);
return ~0U;
}
if (!devices) if (!devices)
{ {
...@@ -506,6 +516,7 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun ...@@ -506,6 +516,7 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
if (*device_count < 2) if (*device_count < 2)
{ {
SetLastError(ERROR_INSUFFICIENT_BUFFER);
*device_count = 2; *device_count = 2;
return ~0U; return ~0U;
} }
......
...@@ -1491,21 +1491,19 @@ static void test_GetMouseMovePointsEx(void) ...@@ -1491,21 +1491,19 @@ static void test_GetMouseMovePointsEx(void)
static void test_GetRawInputDeviceList(void) static void test_GetRawInputDeviceList(void)
{ {
RAWINPUTDEVICELIST devices[32]; RAWINPUTDEVICELIST devices[32];
UINT ret, devcount, odevcount; UINT ret, oret, devcount, odevcount;
DWORD err; DWORD err;
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
ret = pGetRawInputDeviceList(NULL, NULL, 0); ret = pGetRawInputDeviceList(NULL, NULL, 0);
err = GetLastError(); err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret); ok(ret == -1, "expected -1, got %d\n", ret);
todo_wine
ok(err == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", err); ok(err == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", err);
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
ret = pGetRawInputDeviceList(NULL, NULL, sizeof(devices[0])); ret = pGetRawInputDeviceList(NULL, NULL, sizeof(devices[0]));
err = GetLastError(); err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret); ok(ret == -1, "expected -1, got %d\n", ret);
todo_wine
ok(err == ERROR_NOACCESS, "expected 998, got %d\n", err); ok(err == ERROR_NOACCESS, "expected 998, got %d\n", err);
devcount = 0; devcount = 0;
...@@ -1518,19 +1516,23 @@ todo_wine ...@@ -1518,19 +1516,23 @@ todo_wine
ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0])); ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0]));
err = GetLastError(); err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret); ok(ret == -1, "expected -1, got %d\n", ret);
todo_wine
ok(err == ERROR_INSUFFICIENT_BUFFER, "expected 122, got %d\n", err); ok(err == ERROR_INSUFFICIENT_BUFFER, "expected 122, got %d\n", err);
ok(devcount > 0, "expected non-zero\n"); ok(devcount > 0, "expected non-zero\n");
/* devcount contain now the correct number of devices */ /* devcount contains now the correct number of devices */
ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0])); ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0]));
ok(ret > 0, "expected non-zero\n"); ok(ret > 0, "expected non-zero\n");
/* check if variable changes from larger to smaller value */ /* check if variable changes from larger to smaller value */
devcount = odevcount = sizeof(devices) / sizeof(devices[0]); devcount = odevcount = sizeof(devices) / sizeof(devices[0]);
ret = pGetRawInputDeviceList(devices, &odevcount, sizeof(devices[0])); oret = ret = pGetRawInputDeviceList(devices, &odevcount, sizeof(devices[0]));
ok(ret > 0, "expected non-zero\n"); ok(ret > 0, "expected non-zero\n");
ok(devcount == odevcount, "expected %d, got %d\n", devcount, odevcount); ok(devcount == odevcount, "expected %d, got %d\n", devcount, odevcount);
devcount = odevcount;
odevcount = sizeof(devices) / sizeof(devices[0]);
ret = pGetRawInputDeviceList(NULL, &odevcount, sizeof(devices[0]));
ok(ret == 0, "expected 0, got %d\n", ret);
ok(odevcount == oret, "expected %d, got %d\n", oret, odevcount);
} }
static void test_key_map(void) static void test_key_map(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment