mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[WIN32K:NTUSER] Fix parameter check in NtUserGetAsyncKeyState. CORE-18124
This commit is contained in:
parent
9c21d0c124
commit
885459d8b4
4 changed files with 84 additions and 1 deletions
|
@ -52,6 +52,7 @@ list(APPEND SOURCE
|
||||||
# ntuser/NtUserEnumDisplayMonitors.c
|
# ntuser/NtUserEnumDisplayMonitors.c
|
||||||
ntuser/NtUserEnumDisplaySettings.c
|
ntuser/NtUserEnumDisplaySettings.c
|
||||||
ntuser/NtUserFindExistingCursorIcon.c
|
ntuser/NtUserFindExistingCursorIcon.c
|
||||||
|
ntuser/NtUserGetAsyncKeyState.c
|
||||||
ntuser/NtUserGetClassInfo.c
|
ntuser/NtUserGetClassInfo.c
|
||||||
# ntuser/NtUserGetIconInfo.c
|
# ntuser/NtUserGetIconInfo.c
|
||||||
ntuser/NtUserGetKeyboardLayoutName.c
|
ntuser/NtUserGetKeyboardLayoutName.c
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Win32k tests
|
||||||
|
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||||
|
* PURPOSE: Test for NtUserGetAsyncKeyState
|
||||||
|
* COPYRIGHT: Copyright 2022 Thomas Faber (thomas.faber@reactos.org)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <win32nt.h>
|
||||||
|
|
||||||
|
START_TEST(NtUserGetAsyncKeyState)
|
||||||
|
{
|
||||||
|
SHORT Ret;
|
||||||
|
DWORD Error;
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(1); // VK_LBUTTON
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0 || Ret == 1, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0xfe);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0xff);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == 0xdeadbeef, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0x100);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0x101);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0x10000000);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0x7fffffff);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(0x80000000);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(-2);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = NtUserGetAsyncKeyState(-1);
|
||||||
|
Error = GetLastError();
|
||||||
|
ok(Ret == 0, "Ret = %d\n", Ret);
|
||||||
|
ok(Error == ERROR_INVALID_PARAMETER, "Error = %lu\n", Error);
|
||||||
|
}
|
|
@ -52,6 +52,7 @@ extern void func_NtUserCreateWindowEx(void);
|
||||||
//extern void func_NtUserEnumDisplayMonitors(void);
|
//extern void func_NtUserEnumDisplayMonitors(void);
|
||||||
extern void func_NtUserEnumDisplaySettings(void);
|
extern void func_NtUserEnumDisplaySettings(void);
|
||||||
extern void func_NtUserFindExistingCursorIcon(void);
|
extern void func_NtUserFindExistingCursorIcon(void);
|
||||||
|
extern void func_NtUserGetAsyncKeyState(void);
|
||||||
extern void func_NtUserGetClassInfo(void);
|
extern void func_NtUserGetClassInfo(void);
|
||||||
//extern void func_NtUserGetIconInfo(void);
|
//extern void func_NtUserGetIconInfo(void);
|
||||||
extern void func_NtUserGetKeyboardLayoutName(void);
|
extern void func_NtUserGetKeyboardLayoutName(void);
|
||||||
|
@ -120,6 +121,7 @@ const struct test winetest_testlist[] =
|
||||||
//{ "NtUserEnumDisplayMonitors", func_NtUserEnumDisplayMonitors },
|
//{ "NtUserEnumDisplayMonitors", func_NtUserEnumDisplayMonitors },
|
||||||
{ "NtUserEnumDisplaySettings", func_NtUserEnumDisplaySettings },
|
{ "NtUserEnumDisplaySettings", func_NtUserEnumDisplaySettings },
|
||||||
{ "NtUserFindExistingCursorIcon", func_NtUserFindExistingCursorIcon },
|
{ "NtUserFindExistingCursorIcon", func_NtUserFindExistingCursorIcon },
|
||||||
|
{ "NtUserGetAsyncKeyState", func_NtUserGetAsyncKeyState },
|
||||||
{ "NtUserGetClassInfo", func_NtUserGetClassInfo },
|
{ "NtUserGetClassInfo", func_NtUserGetClassInfo },
|
||||||
//{ "NtUserGetIconInfo", func_NtUserGetIconInfo },
|
//{ "NtUserGetIconInfo", func_NtUserGetIconInfo },
|
||||||
{ "NtUserGetKeyboardLayoutName", func_NtUserGetKeyboardLayoutName },
|
{ "NtUserGetKeyboardLayoutName", func_NtUserGetKeyboardLayoutName },
|
||||||
|
|
|
@ -635,7 +635,7 @@ NtUserGetAsyncKeyState(INT Key)
|
||||||
|
|
||||||
TRACE("Enter NtUserGetAsyncKeyState\n");
|
TRACE("Enter NtUserGetAsyncKeyState\n");
|
||||||
|
|
||||||
if (Key >= 0x100)
|
if (Key >= 0x100 || Key < 0)
|
||||||
{
|
{
|
||||||
EngSetLastError(ERROR_INVALID_PARAMETER);
|
EngSetLastError(ERROR_INVALID_PARAMETER);
|
||||||
ERR("Invalid parameter Key\n");
|
ERR("Invalid parameter Key\n");
|
||||||
|
|
Loading…
Reference in a new issue