The GetProcessAffinityMask function obtains a process affinity mask for the specified process and the system affinity mask for the system.
A process affinity mask is a bit vector in which each bit represents the processors that a process is allowed to run on. A system affinity mask is a bit vector in which each bit represents the processors that are configured into a system.
A process affinity mask is a proper subset of a system affinity mask. A process is only allowed to run on the processors configured into a system.
BOOL GetProcessAffinityMask(
HANDLE hProcess, // handle to the process of interest
LPDWORD lpProcessAffinityMask, // pointer to structure to receive
// process affinity mask
LPDWORD lpSystemAffinityMask // pointer to structure to receive
// system affinity mask
);
Windows NT: This handle must have PROCESS_QUERY_INFORMATION access.
If the function succeeds, the return value is nonzero.
Windows NT: Upon success, the function sets the DWORD variables pointed to by lpProcessAffinityMask and lpSystemAffinityMask to the appropriate affinity masks.
Windows 95 and Windows 98: Upon success, the function sets the DWORD variables pointed to by lpProcessAffinityMask and lpSystemAffinityMask to the value one.
If the function fails, the return value is zero, and the values of the DWORD variables pointed to by lpProcessAffinityMask and lpSystemAffinityMask are undefined. To get extended error information, call GetLastError.
Windows NT: Requires version 3.5 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winbase.h.
Import Library: Use kernel32.lib.
Processes and Threads Overview, Process and Thread Functions, SetProcessAffinityMask, SetThreadAffinityMask