Module: wine Branch: master Commit: b51476ad42827e830bf38e561847bda6fe11a4c5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b51476ad42827e830bf38e5618...
Author: Hans Leidekker hans@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; }