Module: wine Branch: master Commit: 3d7118bcd18afba27eceeb750290b1a7f4951ea4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d7118bcd18afba27eceeb7502...
Author: Juan Lang juan.lang@gmail.com Date: Wed Jan 21 09:51:49 2009 -0800
ntdll: Implement the ThreadAffinityMask query.
---
dlls/ntdll/thread.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 0904125..56d742d 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -1194,6 +1194,26 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, } } return status; + case ThreadAffinityMask: + { + const ULONG_PTR affinity_mask = ((ULONG_PTR)1 << NtCurrentTeb()->Peb->NumberOfProcessors) - 1; + ULONG_PTR affinity = 0; + + SERVER_START_REQ( get_thread_info ) + { + req->handle = wine_server_obj_handle( handle ); + req->tid_in = 0; + if (!(status = wine_server_call( req ))) + affinity = reply->affinity & affinity_mask; + } + SERVER_END_REQ; + if (status == STATUS_SUCCESS) + { + if (data) memcpy( data, &affinity, min( length, sizeof(affinity) )); + if (ret_len) *ret_len = min( length, sizeof(affinity) ); + } + } + return status; case ThreadTimes: { KERNEL_USER_TIMES kusrt; @@ -1325,7 +1345,6 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, } case ThreadPriority: case ThreadBasePriority: - case ThreadAffinityMask: case ThreadImpersonationToken: case ThreadEnableAlignmentFaultFixup: case ThreadEventPair_Reusable: