Hans Leidekker : kernel32: Retrieve the system affinity mask from ntdll.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jan 21 15:16:21 CST 2015


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Jan 21 13:23:36 2015 +0100

kernel32: Retrieve the system affinity mask from ntdll.

---

 dlls/kernel32/process.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 396b7d4..8204dd9 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -3259,13 +3259,21 @@ BOOL WINAPI GetProcessAffinityMask( HANDLE hProcess, PDWORD_PTR process_mask, PD
 {
     NTSTATUS status = STATUS_SUCCESS;
 
-    if (system_mask) *system_mask = (1 << NtCurrentTeb()->Peb->NumberOfProcessors) - 1;
     if (process_mask)
     {
         if ((status = NtQueryInformationProcess( hProcess, ProcessAffinityMask,
                                                  process_mask, sizeof(*process_mask), NULL )))
             SetLastError( RtlNtStatusToDosError(status) );
     }
+    if (system_mask && status == STATUS_SUCCESS)
+    {
+        SYSTEM_BASIC_INFORMATION info;
+
+        if ((status = NtQuerySystemInformation( SystemBasicInformation, &info, sizeof(info), NULL )))
+            SetLastError( RtlNtStatusToDosError(status) );
+        else
+            *system_mask = info.ActiveProcessorsAffinityMask;
+    }
     return !status;
 }
 




More information about the wine-cvs mailing list