kernel32: Revise SetThreadIdealProcessor to return success.
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 2c699b4..e80c63e 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -812,22 +812,24 @@
       "SetThreadAffinityMask passed for an illegal processor\n");
 /* NOTE: This only works on WinNT/2000/XP) */
    if (pSetThreadIdealProcessor) {
-     todo_wine {
-       SetLastError(0);
-       error=pSetThreadIdealProcessor(curthread,0);
-       if (GetLastError()!=ERROR_CALL_NOT_IMPLEMENTED) {
-         ok(error!=-1, "SetThreadIdealProcessor failed\n");
-       }
+     SetLastError(0xdeadbeef);
+     error=pSetThreadIdealProcessor(curthread,0);
+     if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)
+     {
+       win_skip("SetThreadIdealProcessor is not implemented\n");
+       return;
      }
-     if (GetLastError()!=ERROR_CALL_NOT_IMPLEMENTED) {
-       error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
-       ok(error==-1,
-          "SetThreadIdealProcessor succeeded with an illegal processor #\n");
-       todo_wine {
-         error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS);
-         ok(error==0, "SetThreadIdealProcessor returned an incorrect value\n");
-       }
-     }
+     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());
+
+     error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS);
+     ok(error==0, "SetThreadIdealProcessor returned an incorrect value\n");
    }
 }
 
diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c
index 0b899c2..b037f44 100644
--- a/dlls/kernel32/thread.c
+++ b/dlls/kernel32/thread.c
@@ -413,8 +413,12 @@
     DWORD dwIdealProcessor)  /* [in] Specifies the new preferred processor */
 {
     FIXME("(%p): stub\n",hThread);
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return -1L;
+    if (dwIdealProcessor > MAXIMUM_PROCESSORS)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return ~0u;
+    }
+    return 0;
 }