Reactos

[KMTESTS] ExResource fixes (#8341)

- Check Windows version at runtime for select tests
- Check ActiveEntries too on NT6+

authored by

Mohammed al-Ramadany and committed by
GitHub
ef03e090 5a36dd60

+38 -12
+38 -12
modules/rostests/kmtests/ntos_ex/ExResource.c
··· 179 179 PVOID Ret; 180 180 LONG Count = 0; 181 181 182 - ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 182 + if (GetNTVersion() < _WIN32_WINNT_WIN8) 183 + ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 184 + 183 185 if (pKeAreAllApcsDisabled) 184 186 ok_eq_uint(pKeAreAllApcsDisabled(), AreApcsDisabled); 185 187 ··· 193 195 /* ExEnterCriticalRegionAndAcquireResourceShared, ExEnterCriticalRegionAndAcquireSharedWaitForExclusive */ 194 196 Count = 0; 195 197 Ret = pExEnterCriticalRegionAndAcquireResourceShared(Res); ++Count; 196 - ok_eq_pointer(Ret, KeGetCurrentThread()->Win32Thread); 198 + ok_eq_pointer(Ret, GetNTVersion() <= _WIN32_WINNT_WS03 ? KeGetCurrentThread()->Win32Thread : NULL); 197 199 ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 198 200 if (pKeAreAllApcsDisabled) 199 201 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); 200 202 CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU); 201 203 202 204 Ret = pExEnterCriticalRegionAndAcquireResourceShared(Res); ++Count; 203 - ok_eq_pointer(Ret, KeGetCurrentThread()->Win32Thread); 205 + ok_eq_pointer(Ret, GetNTVersion() <= _WIN32_WINNT_WS03 ? KeGetCurrentThread()->Win32Thread : NULL); 204 206 ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 205 207 if (pKeAreAllApcsDisabled) 206 208 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); 207 209 CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU); 208 210 209 211 pExEnterCriticalRegionAndAcquireSharedWaitForExclusive(Res); ++Count; 210 - ok_eq_pointer(Ret, KeGetCurrentThread()->Win32Thread); 212 + ok_eq_pointer(Ret, GetNTVersion() <= _WIN32_WINNT_WS03 ? KeGetCurrentThread()->Win32Thread : NULL); 211 213 ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 212 214 if (pKeAreAllApcsDisabled) 213 215 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); ··· 223 225 } 224 226 225 227 pExReleaseResourceAndLeaveCriticalRegion(Res); 226 - ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 228 + if (GetNTVersion() < _WIN32_WINNT_WIN8) 229 + ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 230 + 227 231 if (pKeAreAllApcsDisabled) 228 232 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); 229 233 CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU); 230 234 231 235 /* ExEnterCriticalRegionAndAcquireResourceExclusive */ 232 236 Count = 0; 233 - ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 237 + if (GetNTVersion() < _WIN32_WINNT_WIN8) 238 + ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 239 + 234 240 if (pKeAreAllApcsDisabled) 235 241 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); 236 242 Ret = pExEnterCriticalRegionAndAcquireResourceExclusive(Res); ++Count; 237 - ok_eq_pointer(Ret, KeGetCurrentThread()->Win32Thread); 243 + ok_eq_pointer(Ret, GetNTVersion() <= _WIN32_WINNT_WS03 ? KeGetCurrentThread()->Win32Thread : NULL); 238 244 ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 239 245 if (pKeAreAllApcsDisabled) 240 246 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); 241 247 CheckResourceStatus(Res, TRUE, Count, 0LU, 0LU); 242 248 243 249 Ret = pExEnterCriticalRegionAndAcquireResourceExclusive(Res); ++Count; 244 - ok_eq_pointer(Ret, KeGetCurrentThread()->Win32Thread); 250 + ok_eq_pointer(Ret, GetNTVersion() <= _WIN32_WINNT_WS03 ? KeGetCurrentThread()->Win32Thread : NULL); 245 251 ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 246 252 if (pKeAreAllApcsDisabled) 247 253 ok_eq_bool(pKeAreAllApcsDisabled(), AreApcsDisabled); ··· 254 260 CheckResourceStatus(Res, TRUE, Count, 0LU, 0LU); 255 261 256 262 pExReleaseResourceAndLeaveCriticalRegion(Res); --Count; 257 - ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 263 + if (GetNTVersion() < _WIN32_WINNT_WIN8) 264 + ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 265 + 258 266 if (pKeAreAllApcsDisabled) 259 267 ok_eq_uint(pKeAreAllApcsDisabled(), AreApcsDisabled); 260 268 CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU); ··· 396 404 Status = StartThread(&ThreadDataShared2, NULL, FALSE, TRUE); 397 405 ok_eq_hex(Status, STATUS_SUCCESS); 398 406 CheckResourceStatus(Res, FALSE, 0LU, 0LU, 0LU); 399 - ok_eq_int(Res->ActiveCount, 2); 407 + if (GetNTVersion() <= _WIN32_WINNT_WS03) 408 + { 409 + ok_eq_int(Res->ActiveCount, 2); 410 + } 411 + else 412 + { 413 + ok_eq_int(Res->ActiveCount, 1); 414 + ok_eq_int(Res->ActiveEntries, 2); 415 + } 400 416 FinishThread(&ThreadDataShared2); 401 417 CheckResourceStatus(Res, FALSE, 0LU, 0LU, 0LU); 402 418 ok_eq_int(Res->ActiveCount, 1); ··· 434 450 Status = StartThread(&ThreadDataSharedStarve, NULL, TRUE, TRUE); 435 451 ok_eq_hex(Status, STATUS_SUCCESS); 436 452 CheckResourceStatus(Res, FALSE, 0LU, 1LU, 0LU); 437 - ok_eq_int(Res->ActiveCount, 2); 453 + if (GetNTVersion() <= _WIN32_WINNT_WS03) 454 + { 455 + ok_eq_int(Res->ActiveCount, 2); 456 + } 457 + else 458 + { 459 + ok_eq_int(Res->ActiveCount, 1); 460 + ok_eq_int(Res->ActiveEntries, 2); 461 + } 438 462 FinishThread(&ThreadDataSharedStarve); 439 463 CheckResourceStatus(Res, FALSE, 0LU, 1LU, 0LU); 440 464 ok_eq_int(Res->ActiveCount, 1); ··· 566 590 KeRaiseIrql(APC_LEVEL, &Irql); 567 591 TestResourceUndocumentedShortcuts(&Res, TRUE); 568 592 KeLowerIrql(Irql); 569 - ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 593 + if (GetNTVersion() < _WIN32_WINNT_WIN8) 594 + ok_bool_false(KeAreApcsDisabled(), "KeAreApcsDisabled returned"); 595 + 570 596 CheckResourceStatus(&Res, FALSE, 0LU, 0LU, 0LU); 571 597 572 598 TestResourceWithThreads(&Res);