8eda902c0a6b440245cadcfd93205f9171b68271
3 QueryUserRegValueW(LPWSTR pszSubKey
, LPWSTR pszValueName
, PVOID pData
, LPDWORD cbSize
, LPDWORD pType
)
8 RegOpenKeyExW(HKEY_CURRENT_USER
, pszSubKey
, 0, KEY_QUERY_VALUE
, &hKey
);
9 ret
= RegQueryValueExW(hKey
, pszValueName
, NULL
, pType
, (LPBYTE
)pData
, cbSize
);
21 wc
.lpfnWndProc
= DefWindowProcA
;
24 wc
.hInstance
= g_hInstance
;
27 wc
.hbrBackground
= NULL
;
28 wc
.lpszMenuName
= NULL
;
29 wc
.lpszClassName
= "testclass";
32 return CreateWindowA("testclass",
47 Test_SPI_87_88(PTESTINFO pti
)
49 DWORD dwRet
= 0xdeadbeef;
51 TEST(NtUserSystemParametersInfo(87, 0, &dwRet
, 0) == TRUE
);
52 TEST(dwRet
== 0xdeadbeef);
54 TEST(NtUserSystemParametersInfo(87, 0, &dwRet
, 0) == TRUE
);
58 TEST(NtUserSystemParametersInfo(87, 0, &dwRet
, 0) == TRUE
);
64 Test_NtUserSystemParametersInfo_Params(PTESTINFO pti
)
72 SetLastError(ERROR_SUCCESS
);
73 TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT
, 0, &uint
, 0) == TRUE
);
74 TEST(GetLastError() == ERROR_SUCCESS
);
76 /* Test invalid SPI code */
77 SetLastError(ERROR_SUCCESS
);
78 TEST(NtUserSystemParametersInfo(7, 0, &data
, 0) == FALSE
);
79 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
81 /* Test wrong cbSize member */
83 SetLastError(ERROR_SUCCESS
);
84 TEST(NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT
, 0, &ato
, 0) == FALSE
);
85 TEST(GetLastError() == ERROR_SUCCESS
);
87 /* Test undocumented, but valid SPI codes */
88 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
89 SetLastError(ERROR_SUCCESS
);
90 TEST(NtUserSystemParametersInfo(4112, 0, &data
, 0) == TRUE
);
91 TEST(GetLastError() == ERROR_SUCCESS
);
93 TEST(data
[1] == 0xdeadbeef);
95 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
96 SetLastError(ERROR_SUCCESS
);
97 TEST(NtUserSystemParametersInfo(4113, 0, &data
, 0) == TRUE
);
98 TEST(GetLastError() == ERROR_SUCCESS
);
99 TEST(data
[0] == 0xbeefdead);
100 TEST(data
[1] == 0xbeefdead);
102 NtUserSystemParametersInfo(4112, 0, &data
, 0);
105 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
106 SetLastError(ERROR_SUCCESS
);
107 TEST(NtUserSystemParametersInfo(4136, 0, &data
, 0) == TRUE
);
108 TEST(GetLastError() == ERROR_SUCCESS
);
109 TEST(data
[0] != 0xdeadbeef);
110 TEST(data
[1] == 0xdeadbeef);
112 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
113 SetLastError(ERROR_SUCCESS
);
114 TEST(NtUserSystemParametersInfo(4137, 0, &data
, 0) == TRUE
);
115 TEST(GetLastError() == ERROR_SUCCESS
);
116 TEST(data
[0] == 0xbeefdead);
117 TEST(data
[1] == 0xbeefdead);
119 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
120 SetLastError(ERROR_SUCCESS
);
121 TEST(NtUserSystemParametersInfo(4138, 0, &data
, 0) == TRUE
);
122 TEST(GetLastError() == ERROR_SUCCESS
);
123 TEST(data
[0] != 0xdeadbeef);
124 TEST(data
[1] == 0xdeadbeef);
126 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
127 SetLastError(ERROR_SUCCESS
);
128 TEST(NtUserSystemParametersInfo(4139, 0, &data
, 0) == TRUE
);
129 TEST(GetLastError() == ERROR_SUCCESS
);
130 TEST(data
[0] == 0xbeefdead);
131 TEST(data
[1] == 0xbeefdead);
133 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
134 SetLastError(ERROR_SUCCESS
);
135 TEST(NtUserSystemParametersInfo(4140, 0, &data
, 0) == TRUE
);
136 TEST(GetLastError() == ERROR_SUCCESS
);
137 TEST(data
[0] != 0xdeadbeef);
138 TEST(data
[1] == 0xdeadbeef);
140 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
141 SetLastError(ERROR_SUCCESS
);
142 TEST(NtUserSystemParametersInfo(4141, 0, &data
, 0) == TRUE
);
143 TEST(GetLastError() == ERROR_SUCCESS
);
144 TEST(data
[0] == 0xbeefdead);
145 TEST(data
[1] == 0xbeefdead);
147 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
148 SetLastError(ERROR_SUCCESS
);
149 TEST(NtUserSystemParametersInfo(4142, 0, &data
, 0) == TRUE
);
150 TEST(GetLastError() == ERROR_SUCCESS
);
151 TEST(data
[0] != 0xdeadbeef);
152 TEST(data
[1] == 0xdeadbeef);
154 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
155 SetLastError(ERROR_SUCCESS
);
156 TEST(NtUserSystemParametersInfo(4143, 0, &data
, 0) == TRUE
);
157 TEST(GetLastError() == ERROR_SUCCESS
);
158 TEST(data
[0] == 0xbeefdead);
159 TEST(data
[1] == 0xbeefdead);
161 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
162 SetLastError(ERROR_SUCCESS
);
163 TEST(NtUserSystemParametersInfo(4144, 0, &data
, 0) == TRUE
);
164 TEST(GetLastError() == ERROR_SUCCESS
);
165 TEST(data
[0] != 0xdeadbeef);
166 TEST(data
[1] == 0xdeadbeef);
168 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
169 SetLastError(ERROR_SUCCESS
);
170 TEST(NtUserSystemParametersInfo(4145, 0, &data
, 0) == TRUE
);
171 TEST(GetLastError() == ERROR_SUCCESS
);
172 TEST(data
[0] == 0xbeefdead);
173 TEST(data
[1] == 0xbeefdead);
175 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
176 SetLastError(ERROR_SUCCESS
);
177 TEST(NtUserSystemParametersInfo(4146, 0, &data
, 0) == TRUE
);
178 TEST(GetLastError() == ERROR_SUCCESS
);
179 TEST(data
[0] != 0xdeadbeef);
180 TEST(data
[1] == 0xdeadbeef);
182 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
183 SetLastError(ERROR_SUCCESS
);
184 TEST(NtUserSystemParametersInfo(4147, 0, &data
, 0) == TRUE
);
185 TEST(GetLastError() == ERROR_SUCCESS
);
186 TEST(data
[0] == 0xbeefdead);
187 TEST(data
[1] == 0xbeefdead);
189 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
190 SetLastError(ERROR_SUCCESS
);
191 TEST(NtUserSystemParametersInfo(4148, 0, &data
, 0) == TRUE
);
192 TEST(GetLastError() == ERROR_SUCCESS
);
193 TEST(data
[0] != 0xdeadbeef);
194 TEST(data
[1] == 0xdeadbeef);
196 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
197 SetLastError(ERROR_SUCCESS
);
198 TEST(NtUserSystemParametersInfo(4149, 0, &data
, 0) == TRUE
);
199 TEST(GetLastError() == ERROR_SUCCESS
);
200 TEST(data
[0] == 0xbeefdead);
201 TEST(data
[1] == 0xbeefdead);
203 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
204 SetLastError(ERROR_SUCCESS
);
205 TEST(NtUserSystemParametersInfo(4150, 0, &data
, 0) == TRUE
);
206 TEST(GetLastError() == ERROR_SUCCESS
);
207 TEST(data
[0] != 0xdeadbeef);
208 TEST(data
[1] == 0xdeadbeef);
210 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
211 SetLastError(ERROR_SUCCESS
);
212 TEST(NtUserSystemParametersInfo(4151, 0, &data
, 0) == TRUE
);
213 TEST(GetLastError() == ERROR_SUCCESS
);
214 TEST(data
[0] == 0xbeefdead);
215 TEST(data
[1] == 0xbeefdead);
217 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
218 SetLastError(ERROR_SUCCESS
);
219 TEST(NtUserSystemParametersInfo(4152, 0, &data
, 0) == TRUE
);
220 TEST(GetLastError() == ERROR_SUCCESS
);
221 TEST(data
[0] != 0xdeadbeef);
222 TEST(data
[1] == 0xdeadbeef);
224 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
225 SetLastError(ERROR_SUCCESS
);
226 TEST(NtUserSystemParametersInfo(4153, 0, &data
, 0) == TRUE
);
227 TEST(GetLastError() == ERROR_SUCCESS
);
228 TEST(data
[0] == 0xbeefdead);
229 TEST(data
[1] == 0xbeefdead);
231 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
232 SetLastError(ERROR_SUCCESS
);
233 TEST(NtUserSystemParametersInfo(4154, 0, &data
, 0) == TRUE
);
234 TEST(GetLastError() == ERROR_SUCCESS
);
235 TEST(data
[0] != 0xdeadbeef);
236 TEST(data
[1] == 0xdeadbeef);
238 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
239 SetLastError(ERROR_SUCCESS
);
240 TEST(NtUserSystemParametersInfo(4155, 0, &data
, 0) == TRUE
);
241 TEST(GetLastError() == ERROR_SUCCESS
);
242 TEST(data
[0] == 0xbeefdead);
243 TEST(data
[1] == 0xbeefdead);
245 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
246 SetLastError(ERROR_SUCCESS
);
247 TEST(NtUserSystemParametersInfo(4156, 0, &data
, 0) == TRUE
);
248 TEST(GetLastError() == ERROR_SUCCESS
);
249 TEST(data
[0] != 0xdeadbeef);
250 TEST(data
[1] == 0xdeadbeef);
252 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xbeefdead;
253 SetLastError(ERROR_SUCCESS
);
254 TEST(NtUserSystemParametersInfo(4157, 0, &data
, 0) == TRUE
);
255 TEST(GetLastError() == ERROR_SUCCESS
);
256 TEST(data
[0] == 0xbeefdead);
257 TEST(data
[1] == 0xbeefdead);
259 /* Test invalid pointer */
260 SetLastError(ERROR_SUCCESS
);
261 TEST(NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT
, 0, (PVOID
)0x80000000, 0) == FALSE
);
262 TEST(GetLastError() == ERROR_NOACCESS
);
263 for(i
= 0; i
< 1000; i
++) data
[i
] = 0xdeadbeef;
265 /* test wrong bools */
269 Test_NtUserSystemParametersInfo_fWinIni(PTESTINFO pti
)
272 // UINT uFocusBorderHeight;
276 ato
.cbSize
= sizeof(ato
);
277 NtUserSystemParametersInfo(SPI_GETACCESSTIMEOUT
, 0, &ato
, 0);
279 NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT
, 0, &ato
, 0);
282 // NtUserSystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, 0);
283 // NtUserSystemParametersInfo(SPI_SETFOCUSBORDERHEIGHT, 0, &uFocusBorderHeight, SPIF_UPDATEINIFILE);
285 NtUserSystemParametersInfo(SPI_SETACCESSTIMEOUT
, 0, &ato
, 0);
288 QueryUserRegValueW(L
"Control Panel\\Accessibility\\TimeOut", L
"TimeToWait", &Buffer
, &cbSize
, NULL
);
293 Test_SPI_GETSETBEEP(PTESTINFO pti
)
295 BOOL bOrig
, bTemp
= 0;
299 /* Get original value */
300 NtUserSystemParametersInfo(SPI_GETBEEP
, 0, &bOrig
, 0);
303 NtUserSystemParametersInfo(SPI_SETBEEP
, 0, NULL
, SPIF_UPDATEINIFILE
);
304 NtUserSystemParametersInfo(SPI_GETBEEP
, 0, &bTemp
, 0);
306 cbSize
= sizeof(szReg
);
307 TEST(QueryUserRegValueW(L
"Control Panel\\Sound", L
"Beep", &szReg
, &cbSize
, NULL
) == ERROR_SUCCESS
);
308 TEST(_wcsicmp(szReg
, L
"No") == 0);
311 NtUserSystemParametersInfo(SPI_SETBEEP
, 1, NULL
, SPIF_UPDATEINIFILE
);
312 NtUserSystemParametersInfo(SPI_GETBEEP
, 0, &bTemp
, 0);
314 cbSize
= sizeof(szReg
);
315 TEST(QueryUserRegValueW(L
"Control Panel\\Sound", L
"Beep", &szReg
, &cbSize
, NULL
) == ERROR_SUCCESS
);
316 TEST(_wcsicmp(szReg
, L
"Yes") == 0);
319 NtUserSystemParametersInfo(SPI_SETBEEP
, 2, NULL
, SPIF_UPDATEINIFILE
);
320 NtUserSystemParametersInfo(SPI_GETBEEP
, 0, &bTemp
, 0);
322 cbSize
= sizeof(szReg
);
323 TEST(QueryUserRegValueW(L
"Control Panel\\Sound", L
"Beep", &szReg
, &cbSize
, NULL
) == ERROR_SUCCESS
);
324 TEST(_wcsicmp(szReg
, L
"Yes") == 0);
326 /* Restore original value */
327 NtUserSystemParametersInfo(SPI_SETBEEP
, 0, &bOrig
, SPIF_UPDATEINIFILE
);
331 Test_SPI_SETDESKWALLPAPER(PTESTINFO pti
)
333 /* Get old Wallpaper */
334 // NtUserSystemParametersInfo(SPI_GET_DESKWALLPAPER, 0,
336 // TEST(NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &hNewWallPaper, 0) == 0);
341 Test_SPI_GETSTICKYKEYS(PTESTINFO pti
)
345 sk
.cbSize
= sizeof(STICKYKEYS
)+1;
346 TEST(NtUserSystemParametersInfo(SPI_GETSTICKYKEYS
, 0, &sk
, 0) == 0);
349 sk
.cbSize
= sizeof(STICKYKEYS
);
350 NtUserSystemParametersInfo(SPI_GETSTICKYKEYS
, 0, &sk
, 0);
351 printf("sk.dwFlags = %lx\n", sk
.dwFlags
);
353 return APISTATUS_NORMAL
;
357 Test_NtUserSystemParametersInfo(PTESTINFO pti
)
361 hWnd
= CreateTestWindow();
363 Test_NtUserSystemParametersInfo_Params(pti
);
365 Test_NtUserSystemParametersInfo_fWinIni(pti
);
367 Test_SPI_GETSETBEEP(pti
);
368 Test_SPI_SETDESKWALLPAPER(pti
);
370 Test_SPI_GETSTICKYKEYS(pti
);
376 return APISTATUS_NORMAL
;