mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 07:32:57 +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);
|
Result = NtUserScrollDC((HDC)0x123456, 10, 20, &rcScroll, &rcClip, hRgn, &rcUpdate);
|
||||||
RTEST(Result == 0);
|
RTEST(Result == 0);
|
||||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||||
printf("%ld\n", GetLastError());
|
|
||||||
|
|
||||||
/* Test invalid update rect */
|
/* Test invalid update rect */
|
||||||
SetLastError(ERROR_SUCCESS);
|
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/NtGdiSTROBJ_vEnumStart.c"
|
||||||
#include "ntgdi/NtGdiGetDIBits.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/NtUserCountClipboardFormats.c"
|
||||||
|
//#include "ntuser/NtUserCreateWindowEx.c"
|
||||||
#include "ntuser/NtUserFindExistingCursorIcon.c"
|
#include "ntuser/NtUserFindExistingCursorIcon.c"
|
||||||
#include "ntuser/NtUserRedrawWindow.c"
|
#include "ntuser/NtUserRedrawWindow.c"
|
||||||
#include "ntuser/NtUserScrollDC.c"
|
#include "ntuser/NtUserScrollDC.c"
|
||||||
|
#include "ntuser/NtUserSystemParametersInfo.c"
|
||||||
#include "ntuser/NtUserToUnicodeEx.c"
|
#include "ntuser/NtUserToUnicodeEx.c"
|
||||||
|
|
||||||
/* The List of tests */
|
/* The List of tests */
|
||||||
|
@ -58,10 +67,19 @@ TESTENTRY TestList[] =
|
||||||
{ L"NtGdiGetDIBitsInternal", Test_NtGdiGetDIBitsInternal },
|
{ L"NtGdiGetDIBitsInternal", Test_NtGdiGetDIBitsInternal },
|
||||||
|
|
||||||
/* ntuser */
|
/* 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"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats },
|
||||||
|
// { L"NtUserCreateWindowEx", Test_NtUserCreateWindowEx },
|
||||||
{ L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
|
{ L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
|
||||||
{ L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
|
{ L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
|
||||||
{ L"NtUserScrollDC", Test_NtUserScrollDC },
|
{ L"NtUserScrollDC", Test_NtUserScrollDC },
|
||||||
|
{ L"NtUserSystemParametersInfo", Test_NtUserSystemParametersInfo },
|
||||||
{ L"NtUserToUnicodeEx", Test_NtUserToUnicodeEx }
|
{ L"NtUserToUnicodeEx", Test_NtUserToUnicodeEx }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,9 @@ WinMain(HINSTANCE hInstance,
|
||||||
/* Convert to gui thread */
|
/* Convert to gui thread */
|
||||||
// IsGUIThread(TRUE); <- does not exists on win2k
|
// IsGUIThread(TRUE); <- does not exists on win2k
|
||||||
|
|
||||||
|
InitOsVersion();
|
||||||
|
printf("g_OsIdx = %d\n", g_OsIdx);
|
||||||
|
|
||||||
g_hModule = LoadLibraryW(L"w32kdll.dll");
|
g_hModule = LoadLibraryW(L"w32kdll.dll");
|
||||||
if (!g_hModule)
|
if (!g_hModule)
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,5 +38,27 @@ extern PGDI_TABLE_ENTRY GdiHandleTable;
|
||||||
|
|
||||||
DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
|
DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
|
||||||
BOOL InitOsVersion();
|
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 */
|
#endif /* _W32KNAPI_H */
|
||||||
|
|
|
@ -8,8 +8,11 @@
|
||||||
<library>user32</library>
|
<library>user32</library>
|
||||||
<library>gdi32</library>
|
<library>gdi32</library>
|
||||||
<library>shell32</library>
|
<library>shell32</library>
|
||||||
|
<library>advapi32</library>
|
||||||
<library>w32kdll</library>
|
<library>w32kdll</library>
|
||||||
|
<library>dbghelp</library>
|
||||||
<file>w32knapi.c</file>
|
<file>w32knapi.c</file>
|
||||||
|
<file>osver.c</file>
|
||||||
<file>testlist.c</file>
|
<file>testlist.c</file>
|
||||||
<file>w32knapi.rc</file>
|
<file>w32knapi.rc</file>
|
||||||
</module>
|
</module>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue