Alexandre Julliard : kernel32/tests: Fix the SetThreadIdealProcessor for WoW64.
Alexandre Julliard
julliard at winehq.org
Wed Dec 23 10:04:14 CST 2009
Module: wine
Branch: master
Commit: 89c0b87fad63e28d7ab8cafeaf5383af0f4861ed
URL: http://source.winehq.org/git/wine.git/?a=commit;h=89c0b87fad63e28d7ab8cafeaf5383af0f4861ed
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Dec 23 12:13:32 2009 +0100
kernel32/tests: Fix the SetThreadIdealProcessor for WoW64.
---
dlls/kernel32/tests/thread.c | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 84968ce..dd83399 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -61,6 +61,7 @@ static DWORD (WINAPI *pSetThreadIdealProcessor)(HANDLE,DWORD);
static BOOL (WINAPI *pSetThreadPriorityBoost)(HANDLE,BOOL);
static BOOL (WINAPI *pRegisterWaitForSingleObject)(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
static BOOL (WINAPI *pUnregisterWait)(HANDLE);
+static BOOL (WINAPI *pIsWow64Process)(HANDLE,PBOOL);
static HANDLE create_target_process(const char *arg)
{
@@ -779,6 +780,9 @@ static VOID test_thread_processor(void)
DWORD_PTR processMask,systemMask;
SYSTEM_INFO sysInfo;
int error=0;
+ BOOL is_wow64;
+
+ if (!pIsWow64Process || !pIsWow64Process( GetCurrentProcess(), &is_wow64 )) is_wow64 = FALSE;
sysInfo.dwNumberOfProcessors=0;
GetSystemInfo(&sysInfo);
@@ -807,12 +811,27 @@ static VOID test_thread_processor(void)
}
ok(error!=-1, "SetThreadIdealProcessor failed\n");
- SetLastError(0xdeadbeef);
- error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
- ok(error==-1,
- "SetThreadIdealProcessor succeeded with an illegal processor #\n");
- ok(GetLastError()==ERROR_INVALID_PARAMETER,
- "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ if (is_wow64)
+ {
+ SetLastError(0xdeadbeef);
+ error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
+ todo_wine
+ ok(error!=-1, "SetThreadIdealProcessor failed for %u on Wow64\n", MAXIMUM_PROCESSORS+1);
+
+ SetLastError(0xdeadbeef);
+ error=pSetThreadIdealProcessor(curthread,65);
+ ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n");
+ ok(GetLastError()==ERROR_INVALID_PARAMETER,
+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ else
+ {
+ SetLastError(0xdeadbeef);
+ error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
+ ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n");
+ ok(GetLastError()==ERROR_INVALID_PARAMETER,
+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS);
ok(error==0, "SetThreadIdealProcessor returned an incorrect value\n");
@@ -1208,6 +1227,7 @@ START_TEST(thread)
pSetThreadPriorityBoost=(void *)GetProcAddress(lib,"SetThreadPriorityBoost");
pRegisterWaitForSingleObject=(void *)GetProcAddress(lib,"RegisterWaitForSingleObject");
pUnregisterWait=(void *)GetProcAddress(lib,"UnregisterWait");
+ pIsWow64Process=(void *)GetProcAddress(lib,"IsWow64Process");
if (argc >= 3)
{
More information about the wine-cvs
mailing list