From: Hans Leidekker hans@codeweavers.com
--- dlls/ntdll/tests/info.c | 7 +++++++ dlls/ntdll/unix/thread.c | 11 +++++++++++ 2 files changed, 18 insertions(+)
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index b2a373ce1b3..7741293d815 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -3547,6 +3547,7 @@ static void test_thread_lookup(void) static void test_thread_ideal_processor(void) { ULONG number, len; + PROCESSOR_NUMBER processor; NTSTATUS status;
number = 0; @@ -3563,6 +3564,12 @@ static void test_thread_ideal_processor(void)
status = pNtQueryInformationThread( GetCurrentThread(), ThreadIdealProcessor, &number, sizeof(number), &len ); ok(status == STATUS_INVALID_INFO_CLASS, "Unexpected status %#lx.\n", status); + + status = pNtQueryInformationThread( GetCurrentThread(), ThreadIdealProcessorEx, &processor, sizeof(processor) + 1, &len ); + ok(status == STATUS_INFO_LENGTH_MISMATCH, "Unexpected status %#lx.\n", status); + + status = pNtQueryInformationThread( GetCurrentThread(), ThreadIdealProcessorEx, &processor, sizeof(processor), &len ); + ok(status == STATUS_SUCCESS, "Unexpected status %#lx.\n", status); }
static void test_thread_info(void) diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c index 71d8359a0f5..3909470dd66 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -2295,6 +2295,17 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, return STATUS_SUCCESS; }
+ case ThreadIdealProcessorEx: + { + PROCESSOR_NUMBER *number = data; + + FIXME( "ThreadIdealProcessorEx info class - stub\n" ); + if (length != sizeof(*number)) return STATUS_INFO_LENGTH_MISMATCH; + memset( number, 0, sizeof(*number) ); + if (ret_len) *ret_len = sizeof(*number); + return STATUS_SUCCESS; + } + case ThreadIdealProcessor: case ThreadEnableAlignmentFaultFixup: return STATUS_INVALID_INFO_CLASS;