mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
add tests for NtUserCallHwnd, NtUserCallHwndLock, NtUserCallHwndOpt, NtUserCallHwndParam, NtUserCallHwndParamLock, NtUserCallNoParam, NtUserCallOneParam and NtUserSystemParametersInfo
svn path=/trunk/; revision=32744
This commit is contained in:
parent
19761f316e
commit
9f99e0a7c4
13 changed files with 769 additions and 1 deletions
56
rostests/apitests/w32knapi/ntuser/NtUserCallHwnd.c
Normal file
56
rostests/apitests/w32knapi/ntuser/NtUserCallHwnd.c
Normal file
|
@ -0,0 +1,56 @@
|
|||
|
||||
INT
|
||||
Test_HwndRoutine_DeregisterShellHookWindow(PTESTINFO pti, HWND hWnd)
|
||||
{
|
||||
TEST(NtUserCallHwnd(hWnd, _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW) == TRUE);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndRoutine_GetWindowContextHelpId (PTESTINFO pti, HWND hWnd)
|
||||
{
|
||||
TEST(NtUserCallHwndParam(hWnd, 0xbadb00b, _HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID) == TRUE);
|
||||
TEST(NtUserCallHwnd(hWnd, _HWND_ROUTINE_GETWNDCONTEXTHLPID) == 0xbadb00b);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndRoutine_SetMsgBox(PTESTINFO pti, HWND hWnd)
|
||||
{
|
||||
TEST(NtUserCallHwnd(hWnd, 0x49) != FALSE);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
INT
|
||||
Test_NtUserCallHwnd(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd;
|
||||
|
||||
hWnd = CreateWindowA("BUTTON",
|
||||
"Test",
|
||||
BS_PUSHBUTTON | WS_VISIBLE,
|
||||
0,
|
||||
0,
|
||||
50,
|
||||
30,
|
||||
NULL,
|
||||
NULL,
|
||||
g_hInstance,
|
||||
0);
|
||||
ASSERT(hWnd);
|
||||
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserCallHwnd(hWnd, 0x44) == FALSE);
|
||||
Test_HwndRoutine_DeregisterShellHookWindow(pti, hWnd); /* 0x45 */
|
||||
TEST(NtUserCallHwnd(hWnd, 0x46) == FALSE); // DWP_GetEnabledPopup
|
||||
Test_HwndRoutine_GetWindowContextHelpId (pti, hWnd); /* 0x47 */
|
||||
TEST(NtUserCallHwnd(hWnd, 0x48) == TRUE);
|
||||
Test_HwndRoutine_SetMsgBox(pti, hWnd); /* 0x49 */
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
DestroyWindow(hWnd);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
100
rostests/apitests/w32knapi/ntuser/NtUserCallHwndLock.c
Normal file
100
rostests/apitests/w32knapi/ntuser/NtUserCallHwndLock.c
Normal file
|
@ -0,0 +1,100 @@
|
|||
|
||||
|
||||
HMENU g_hMenu;
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_WindowHasShadow (PTESTINFO pti, HWND hWnd) /* 0x53 */
|
||||
{
|
||||
// TEST(NtUserCallHwndLock(hWnd, 0x53) == 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_ArrangeIconicWindows(PTESTINFO pti, HWND hWnd) /* 0x54 */
|
||||
{
|
||||
// TEST(NtUserCallHwndLock(hWnd, _HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS) == 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_DrawMenuBar(PTESTINFO pti, HWND hWnd) /* 0x55 */
|
||||
{
|
||||
TEST(NtUserCallHwndLock(hWnd, 0x55) == 1);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_CheckImeShowStatusInThread(PTESTINFO pti, HWND hWnd) /* 0x56 */
|
||||
{
|
||||
TEST(NtUserCallHwndLock(hWnd, 0x56) != 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_GetSysMenuHandle(PTESTINFO pti, HWND hWnd) /* 0x57 */
|
||||
{
|
||||
NtUserCallHwndLock(hWnd, 0x5c);
|
||||
// HMENU hMenu = (HMENU)NtUserCallHwndLock(hWnd, 0x57);
|
||||
// TEST(hMenu != 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_RedrawFrame(PTESTINFO pti, HWND hWnd) /* 0x58 */
|
||||
{
|
||||
// TEST(NtUserCallHwndLock(hWnd, 0x68) != 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndLockRoutine_UpdateWindow(PTESTINFO pti, HWND hWnd) /* 0x5e */
|
||||
{
|
||||
TEST(NtUserCallHwndLock(hWnd, 0x5e) == 1);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtUserCallHwndLock(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd;
|
||||
g_hMenu = CreateMenu();
|
||||
|
||||
hWnd = CreateWindowA("BUTTON",
|
||||
"Test",
|
||||
BS_PUSHBUTTON | WS_VISIBLE,
|
||||
0,
|
||||
0,
|
||||
50,
|
||||
30,
|
||||
NULL,
|
||||
g_hMenu,
|
||||
g_hInstance,
|
||||
0);
|
||||
ASSERT(hWnd);
|
||||
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserCallHwndLock((HWND)-22, 999) == 0);
|
||||
TEST(GetLastError() == ERROR_INVALID_WINDOW_HANDLE);
|
||||
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserCallHwndLock((HWND)0, 0x55) == 0);
|
||||
TEST(GetLastError() == ERROR_INVALID_WINDOW_HANDLE);
|
||||
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserCallHwndLock(hWnd, 999) == 0);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
Test_HwndLockRoutine_WindowHasShadow (pti, hWnd); /* 0x53 */
|
||||
Test_HwndLockRoutine_ArrangeIconicWindows(pti, hWnd);
|
||||
Test_HwndLockRoutine_DrawMenuBar(pti, hWnd);
|
||||
Test_HwndLockRoutine_CheckImeShowStatusInThread(pti, hWnd);
|
||||
Test_HwndLockRoutine_GetSysMenuHandle(pti, hWnd);
|
||||
Test_HwndLockRoutine_RedrawFrame(pti, hWnd);
|
||||
|
||||
Test_HwndLockRoutine_UpdateWindow(pti, hWnd);
|
||||
|
||||
DestroyWindow(hWnd);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
25
rostests/apitests/w32knapi/ntuser/NtUserCallHwndOpt.c
Normal file
25
rostests/apitests/w32knapi/ntuser/NtUserCallHwndOpt.c
Normal file
|
@ -0,0 +1,25 @@
|
|||
|
||||
|
||||
INT
|
||||
Test_HwndOptRoutine_SetProgmanWindow(PTESTINFO pti) /* 0x4a */
|
||||
{
|
||||
// NtUserCallHwndOpt(hWnd, HWNDOPT_ROUTINE_SETPROGMANWINDOW);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_HwndOptRoutine_SetTaskmanWindow (PTESTINFO pti) /* 0x4b */
|
||||
{
|
||||
// NtUserCallHwndOpt(hWnd, HWNDOPT_ROUTINE_SETTASKMANWINDOW);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtUserCallHwndOpt(PTESTINFO pti)
|
||||
{
|
||||
|
||||
Test_HwndOptRoutine_SetProgmanWindow(pti); /* 0x4a */
|
||||
Test_HwndOptRoutine_SetTaskmanWindow (pti); /* 0x4b */
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
34
rostests/apitests/w32knapi/ntuser/NtUserCallHwndParam.c
Normal file
34
rostests/apitests/w32knapi/ntuser/NtUserCallHwndParam.c
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
INT
|
||||
Test_HwndParamRoutine_SetWindowContextHelpId (PTESTINFO pti, HWND hWnd)
|
||||
{
|
||||
TEST(NtUserCallHwndParam(hWnd, 12345, _HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID) == TRUE);
|
||||
TEST(NtUserCallHwnd(hWnd, _HWND_ROUTINE_GETWNDCONTEXTHLPID) == 12345);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
INT
|
||||
Test_NtUserCallHwndParam(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd;
|
||||
|
||||
hWnd = CreateWindowA("BUTTON",
|
||||
"Test",
|
||||
BS_PUSHBUTTON | WS_VISIBLE,
|
||||
0,
|
||||
0,
|
||||
50,
|
||||
30,
|
||||
NULL,
|
||||
NULL,
|
||||
g_hInstance,
|
||||
0);
|
||||
ASSERT(hWnd);
|
||||
|
||||
Test_HwndParamRoutine_SetWindowContextHelpId (pti, hWnd);
|
||||
|
||||
DestroyWindow(hWnd);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
|
||||
INT
|
||||
Test_NtUserCallHwndParamLock(PTESTINFO pti)
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
69
rostests/apitests/w32knapi/ntuser/NtUserCallNoParam.c
Normal file
69
rostests/apitests/w32knapi/ntuser/NtUserCallNoParam.c
Normal file
|
@ -0,0 +1,69 @@
|
|||
|
||||
INT
|
||||
Test_NoParamRoutine_CreateMenu(PTESTINFO pti) /* 0 */
|
||||
{
|
||||
HMENU hMenu;
|
||||
|
||||
hMenu = (HMENU)NtUserCallNoParam(_NOPARAM_ROUTINE_CREATEMENU);
|
||||
TEST(IsMenu(hMenu) == TRUE);
|
||||
DestroyMenu(hMenu);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_CreatePopupMenu(PTESTINFO pti) /* 1 */
|
||||
{
|
||||
HMENU hMenu;
|
||||
|
||||
hMenu = (HMENU)NtUserCallNoParam(_NOPARAM_ROUTINE_CREATEMENUPOPUP);
|
||||
TEST(IsMenu(hMenu) == TRUE);
|
||||
DestroyMenu(hMenu);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_DisableProcessWindowsGhosting(PTESTINFO pti) /* 2 */
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_ClearWakeMask(PTESTINFO pti) /* 3 */
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_AllowForegroundActivation(PTESTINFO pti) /* 4 */
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_DestroyCaret(PTESTINFO pti) /* 5 */
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NoParamRoutine_LoadUserApiHook(PTESTINFO pti) /* 0x1d */
|
||||
{
|
||||
DWORD dwRet;
|
||||
dwRet = NtUserCallNoParam(_NOPARAM_ROUTINE_LOADUSERAPIHOOK);
|
||||
|
||||
// TEST(dwRet != 0);
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
INT
|
||||
Test_NtUserCallNoParam(PTESTINFO pti)
|
||||
{
|
||||
Test_NoParamRoutine_CreateMenu(pti);
|
||||
Test_NoParamRoutine_CreatePopupMenu(pti);
|
||||
Test_NoParamRoutine_LoadUserApiHook(pti); /* 0x1d */
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
73
rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c
Normal file
73
rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
|
||||
INT
|
||||
Test_OneParamRoutine_BeginDeferWindowPos(PTESTINFO pti) /* 0x1e */
|
||||
{
|
||||
HDWP hWinPosInfo;
|
||||
|
||||
hWinPosInfo = (HDWP)NtUserCallOneParam(5, 0x1e);
|
||||
TEST(hWinPosInfo != 0);
|
||||
TEST(EndDeferWindowPos(hWinPosInfo) != 0);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_OneParamRoutine_WindowFromDC(PTESTINFO pti) /* 0x1f */
|
||||
{
|
||||
HDC hDC = GetDC(NULL);
|
||||
HWND hWnd;
|
||||
|
||||
hWnd = (HWND)NtUserCallOneParam((DWORD)hDC, 0x1f);
|
||||
TEST(hWnd != 0);
|
||||
TEST(IsWindow(hWnd));
|
||||
TEST(hWnd == GetDesktopWindow());
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_OneParamRoutine_MapDesktopObject(PTESTINFO pti) /* 0x30 */
|
||||
{
|
||||
DWORD pObject;
|
||||
HWND hWnd;
|
||||
HMENU hMenu;
|
||||
|
||||
hWnd = GetDesktopWindow();
|
||||
pObject = NtUserCallOneParam((DWORD)hWnd, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT);
|
||||
TEST(pObject > 0);
|
||||
TEST(pObject < 0x80000000);
|
||||
|
||||
hMenu = CreateMenu();
|
||||
pObject = NtUserCallOneParam((DWORD)hMenu, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT);
|
||||
TEST(pObject > 0);
|
||||
TEST(pObject < 0x80000000);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_OneParamRoutine_SwapMouseButtons(PTESTINFO pti) /* 0x42 */
|
||||
{
|
||||
BOOL bInverse;
|
||||
|
||||
NtUserCallOneParam(TRUE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
|
||||
bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
|
||||
TEST(bInverse == TRUE);
|
||||
bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
|
||||
TEST(bInverse == FALSE);
|
||||
|
||||
// TODO: test other values
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtUserCallOneParam(PTESTINFO pti)
|
||||
{
|
||||
Test_OneParamRoutine_BeginDeferWindowPos(pti); /* 0x1e */
|
||||
Test_OneParamRoutine_WindowFromDC(pti); /* 0x1f */
|
||||
Test_OneParamRoutine_MapDesktopObject(pti); /* 0x30 */
|
||||
|
||||
Test_OneParamRoutine_SwapMouseButtons(pti); /* 0x42 */
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
|
@ -74,7 +74,6 @@ Test_NtUserScrollDC(PTESTINFO pti)
|
|||
Result = NtUserScrollDC((HDC)0x123456, 10, 20, &rcScroll, &rcClip, hRgn, &rcUpdate);
|
||||
RTEST(Result == 0);
|
||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||
printf("%ld\n", GetLastError());
|
||||
|
||||
/* Test invalid update rect */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
|
|
359
rostests/apitests/w32knapi/ntuser/NtUserSystemParametersInfo.c
Normal file
359
rostests/apitests/w32knapi/ntuser/NtUserSystemParametersInfo.c
Normal file
|
@ -0,0 +1,359 @@
|
|||
|
||||
LONG
|
||||
QueryUserRegValueW(LPWSTR pszSubKey, LPWSTR pszValueName, PVOID pData, LPDWORD cbSize, LPDWORD pType)
|
||||
{
|
||||
HKEY hKey;
|
||||
LONG ret;
|
||||
|
||||
RegOpenKeyExW(HKEY_CURRENT_USER, pszSubKey, 0, KEY_QUERY_VALUE, &hKey);
|
||||
ret = RegQueryValueExW(hKey, pszValueName, NULL, pType, (LPBYTE)pData, cbSize);
|
||||
RegCloseKey(hKey);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
HWND
|
||||
CreateTestWindow()
|
||||
{
|
||||
WNDCLASSA wc;
|
||||
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = DefWindowProcA;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = g_hInstance;
|
||||
wc.hIcon = NULL;
|
||||
wc.hCursor = NULL;
|
||||
wc.hbrBackground = NULL;
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = "testclass";
|
||||
|
||||
RegisterClassA(&wc);
|
||||
return CreateWindowA("testclass",
|
||||
"testwnd",
|
||||
WS_VISIBLE,
|
||||
0,
|
||||
0,
|
||||
50,
|
||||
30,
|
||||
NULL,
|
||||
NULL,
|
||||
g_hInstance,
|
||||
0);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Test_SPI_87_88(PTESTINFO pti)
|
||||
{
|
||||
DWORD dwRet = 0xdeadbeef;
|
||||
|
||||
TEST(NtUserSystemParametersInfo(87, 0, &dwRet, 0) == TRUE);
|
||||
TEST(dwRet == 0xdeadbeef);
|
||||
dwRet++;
|
||||
TEST(NtUserSystemParametersInfo(87, 0, &dwRet, 0) == TRUE);
|
||||
|
||||
|
||||
dwRet--;
|
||||
TEST(NtUserSystemParametersInfo(87, 0, &dwRet, 0) == TRUE);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Test_NtUserSystemParametersInfo_Params(PTESTINFO pti)
|
||||
{
|
||||
// UINT uint;
|
||||
DWORD data[1000];
|
||||
UINT i, uint;
|
||||
#if 1
|
||||
/* Test normal */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &uint, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
/* Test invalid SPI code */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(7, 0, &data, 0) == FALSE);
|
||||
TEST(GetLastError() == ERROR_INVALID_PARAMETER);
|
||||
|
||||
/* Test wrong cbSize member */
|
||||
ACCESSTIMEOUT ato;
|
||||
ato.cbSize = 1;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &ato, 0) == FALSE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
#endif
|
||||
/* Test undocumented, but valid SPI codes */
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4112, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] <= 1);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4113, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
data[0] = 0;
|
||||
NtUserSystemParametersInfo(4112, 0, &data, 0);
|
||||
TEST(data[0] == 1);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4136, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4137, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4138, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4139, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4140, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4141, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4142, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4143, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4144, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4145, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4146, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4147, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4148, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4149, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4150, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4151, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4152, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4153, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4154, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4155, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4156, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] != 0xdeadbeef);
|
||||
TEST(data[1] == 0xdeadbeef);
|
||||
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xbeefdead;
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(4157, 0, &data, 0) == TRUE);
|
||||
TEST(GetLastError() == ERROR_SUCCESS);
|
||||
TEST(data[0] == 0xbeefdead);
|
||||
TEST(data[1] == 0xbeefdead);
|
||||
|
||||
/* Test invalid pointer */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, (PVOID)0x80000000, 0) == FALSE);
|
||||
TEST(GetLastError() == ERROR_NOACCESS);
|
||||
for(i = 0; i < 1000; i++) data[i] = 0xdeadbeef;
|
||||
|
||||
/* test wrong bools */
|
||||
}
|
||||
|
||||
void
|
||||
Test_NtUserSystemParametersInfo_fWinIni(PTESTINFO pti)
|
||||
{
|
||||
ACCESSTIMEOUT ato;
|
||||
UINT uFocusBorderHeight;
|
||||
WCHAR Buffer[6];
|
||||
DWORD cbSize;
|
||||
|
||||
ato.cbSize = sizeof(ato);
|
||||
NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, &ato, 0);
|
||||
ato.iTimeOutMSec++;
|
||||
NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT, 0, &ato, 0);
|
||||
ato.iTimeOutMSec--;
|
||||
|
||||
NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, 0);
|
||||
NtUserSystemParametersInfo(SPI_SETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, SPIF_UPDATEINIFILE);
|
||||
|
||||
NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT, 0, &ato, 0);
|
||||
|
||||
cbSize = 6;
|
||||
QueryUserRegValueW(L"Control Panel\\Accessibility\\TimeOut", L"TimeToWait", &Buffer, &cbSize, NULL);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Test_SPI_GETSETBEEP(PTESTINFO pti)
|
||||
{
|
||||
BOOL bOrig, bTemp = 0;
|
||||
WCHAR szReg[10];
|
||||
DWORD cbSize;
|
||||
|
||||
/* Get original value */
|
||||
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bOrig, 0);
|
||||
|
||||
/* Value 0 */
|
||||
NtUserSystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_UPDATEINIFILE);
|
||||
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
||||
TEST(bTemp == 0);
|
||||
cbSize = sizeof(szReg);
|
||||
TEST(QueryUserRegValueW(L"Control Panel\\Sound", L"Beep", &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
||||
TEST(wcscmpi(szReg, L"No") == 0);
|
||||
|
||||
/* Value 1 */
|
||||
NtUserSystemParametersInfo(SPI_SETBEEP, 1, NULL, SPIF_UPDATEINIFILE);
|
||||
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
||||
TEST(bTemp == 1);
|
||||
cbSize = sizeof(szReg);
|
||||
TEST(QueryUserRegValueW(L"Control Panel\\Sound", L"Beep", &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
||||
TEST(wcscmpi(szReg, L"Yes") == 0);
|
||||
|
||||
/* Value 2 */
|
||||
NtUserSystemParametersInfo(SPI_SETBEEP, 2, NULL, SPIF_UPDATEINIFILE);
|
||||
NtUserSystemParametersInfo(SPI_GETBEEP, 0, &bTemp, 0);
|
||||
TEST(bTemp == 1);
|
||||
cbSize = sizeof(szReg);
|
||||
TEST(QueryUserRegValueW(L"Control Panel\\Sound", L"Beep", &szReg, &cbSize, NULL) == ERROR_SUCCESS);
|
||||
TEST(wcscmpi(szReg, L"Yes") == 0);
|
||||
|
||||
/* Restore original value */
|
||||
NtUserSystemParametersInfo(SPI_SETBEEP, 0, &bOrig, SPIF_UPDATEINIFILE);
|
||||
}
|
||||
|
||||
INT
|
||||
Test_SPI_SETDESKWALLPAPER(PTESTINFO pti)
|
||||
{
|
||||
/* Get old Wallpaper */
|
||||
// NtUserSystemParametersInfo(SPI_GET_DESKWALLPAPER, 0,
|
||||
|
||||
// TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &hNewWallPaper, 0) == 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtUserSystemParametersInfo(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd;
|
||||
|
||||
hWnd = CreateTestWindow();
|
||||
// ASSERT(hWnd);
|
||||
Test_NtUserSystemParametersInfo_Params(pti);
|
||||
|
||||
Test_NtUserSystemParametersInfo_fWinIni(pti);
|
||||
|
||||
Test_SPI_GETSETBEEP(pti);
|
||||
Test_SPI_SETDESKWALLPAPER(pti);
|
||||
|
||||
Test_SPI_87_88(pti);
|
||||
|
||||
DestroyWindow(hWnd);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
|
@ -24,10 +24,19 @@
|
|||
//#include "ntgdi/NtGdiSTROBJ_vEnumStart.c"
|
||||
#include "ntgdi/NtGdiGetDIBits.c"
|
||||
|
||||
#include "ntuser/NtUserCallHwnd.c"
|
||||
#include "ntuser/NtUserCallHwndLock.c"
|
||||
#include "ntuser/NtUserCallHwndOpt.c"
|
||||
#include "ntuser/NtUserCallHwndParam.c"
|
||||
#include "ntuser/NtUserCallHwndParamLock.c"
|
||||
#include "ntuser/NtUserCallNoParam.c"
|
||||
#include "ntuser/NtUserCallOneParam.c"
|
||||
#include "ntuser/NtUserCountClipboardFormats.c"
|
||||
//#include "ntuser/NtUserCreateWindowEx.c"
|
||||
#include "ntuser/NtUserFindExistingCursorIcon.c"
|
||||
#include "ntuser/NtUserRedrawWindow.c"
|
||||
#include "ntuser/NtUserScrollDC.c"
|
||||
#include "ntuser/NtUserSystemParametersInfo.c"
|
||||
#include "ntuser/NtUserToUnicodeEx.c"
|
||||
|
||||
/* The List of tests */
|
||||
|
@ -58,10 +67,19 @@ TESTENTRY TestList[] =
|
|||
{ L"NtGdiGetDIBitsInternal", Test_NtGdiGetDIBitsInternal },
|
||||
|
||||
/* ntuser */
|
||||
{ L"NtUserCallHwnd", Test_NtUserCallHwnd },
|
||||
{ L"NtUserCallHwndLock", Test_NtUserCallHwndLock },
|
||||
{ L"NtUserCallHwndOpt", Test_NtUserCallHwndOpt },
|
||||
{ L"NtUserCallHwndParam", Test_NtUserCallHwndParam },
|
||||
{ L"NtUserCallHwndParamLock", Test_NtUserCallHwndParamLock },
|
||||
{ L"NtUserCallNoParam", Test_NtUserCallNoParam },
|
||||
{ L"NtUserCallOneParam", Test_NtUserCallOneParam },
|
||||
{ L"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats },
|
||||
// { L"NtUserCreateWindowEx", Test_NtUserCreateWindowEx },
|
||||
{ L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
|
||||
{ L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
|
||||
{ L"NtUserScrollDC", Test_NtUserScrollDC },
|
||||
{ L"NtUserSystemParametersInfo", Test_NtUserSystemParametersInfo },
|
||||
{ L"NtUserToUnicodeEx", Test_NtUserToUnicodeEx }
|
||||
};
|
||||
|
||||
|
|
|
@ -74,6 +74,9 @@ WinMain(HINSTANCE hInstance,
|
|||
/* Convert to gui thread */
|
||||
// IsGUIThread(TRUE); <- does not exists on win2k
|
||||
|
||||
InitOsVersion();
|
||||
printf("g_OsIdx = %d\n", g_OsIdx);
|
||||
|
||||
g_hModule = LoadLibraryW(L"w32kdll.dll");
|
||||
if (!g_hModule)
|
||||
{
|
||||
|
|
|
@ -38,5 +38,27 @@ extern PGDI_TABLE_ENTRY GdiHandleTable;
|
|||
|
||||
DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
|
||||
BOOL InitOsVersion();
|
||||
extern UINT g_OsIdx;
|
||||
|
||||
typedef UINT ASPI[5];
|
||||
extern ASPI gNOPARAM_ROUTINE_CREATEMENU;
|
||||
extern ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP;
|
||||
extern ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK;
|
||||
extern ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT;
|
||||
extern ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON;
|
||||
extern ASPI gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW;
|
||||
extern ASPI gHWND_ROUTINE_GETWNDCONTEXTHLPID;
|
||||
extern ASPI gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID;
|
||||
|
||||
#define _NOPARAM_ROUTINE_CREATEMENU gNOPARAM_ROUTINE_CREATEMENU[g_OsIdx]
|
||||
#define _NOPARAM_ROUTINE_CREATEMENUPOPUP gNOPARAM_ROUTINE_CREATEMENUPOPUP[g_OsIdx]
|
||||
#define _NOPARAM_ROUTINE_LOADUSERAPIHOOK gNOPARAM_ROUTINE_LOADUSERAPIHOOK[g_OsIdx]
|
||||
#define _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT gONEPARAM_ROUTINE_MAPDEKTOPOBJECT[g_OsIdx]
|
||||
#define _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON gONEPARAM_ROUTINE_SWAPMOUSEBUTTON[g_OsIdx]
|
||||
#define _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW[g_OsIdx]
|
||||
#define _HWND_ROUTINE_GETWNDCONTEXTHLPID gHWND_ROUTINE_GETWNDCONTEXTHLPID[g_OsIdx]
|
||||
#define _HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID[g_OsIdx]
|
||||
|
||||
|
||||
|
||||
#endif /* _W32KNAPI_H */
|
||||
|
|
|
@ -8,8 +8,11 @@
|
|||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>shell32</library>
|
||||
<library>advapi32</library>
|
||||
<library>w32kdll</library>
|
||||
<library>dbghelp</library>
|
||||
<file>w32knapi.c</file>
|
||||
<file>osver.c</file>
|
||||
<file>testlist.c</file>
|
||||
<file>w32knapi.rc</file>
|
||||
</module>
|
||||
|
|
Loading…
Reference in a new issue