diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 396b7d45bae5b614d02f0d14570d4f3f96944d40..8204dd982281e75352cda07f0dc46f2832693d37 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; }