Juan Lang : ntdll: Implement the ThreadAffinityMask query.

Alexandre Julliard julliard at winehq.org
Fri Jan 23 10:06:59 CST 2009


Module: wine
Branch: master
Commit: 3d7118bcd18afba27eceeb750290b1a7f4951ea4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3d7118bcd18afba27eceeb750290b1a7f4951ea4

Author: Juan Lang <juan.lang at 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:




More information about the wine-cvs mailing list