GetProcessAffinityMask

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
);
 

Parameters

hProcess
An open handle to the process whose affinity mask is desired.

Windows NT: This handle must have PROCESS_QUERY_INFORMATION access.

lpProcessAffinityMask
Pointer to a DWORD that the function sets to the process affinity mask for the specified process.
lpSystemAffinityMask
Pointer to a DWORD that the function sets to the system affinity mask for the system.

Return Values

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.

QuickInfo

  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.

See Also

Processes and Threads Overview, Process and Thread Functions, SetProcessAffinityMask, SetThreadAffinityMask