Platform SDK: DLLs, Processes, and Threads

SetThreadAffinityMask

The SetThreadAffinityMask function sets a processor affinity mask for the specified thread.

A thread affinity mask is a bit vector in which each bit represents the processors that a thread is allowed to run on.

A thread affinity mask must be a proper subset of the process affinity mask for the containing process of a thread. A thread is only allowed to run on the processors its process is allowed to run on.

DWORD_PTR SetThreadAffinityMask (
  HANDLE hThread,                 // handle to thread
  DWORD_PTR dwThreadAffinityMask  // thread affinity mask
);

Parameters

hThread
[in] Handle to the thread whose affinity mask is to be set.

Windows NT/2000: This handle must have the THREAD_SET_INFORMATION access right associated with it. For more information, see Thread Security and Access Rights.

dwThreadAffinityMask
Windows NT/2000: [in] Specifies an affinity mask for the thread.

Windows 95/98: [in] This value must be 1.

Return Values

If the function succeeds, the return value is nonzero.

Windows NT/2000: The return value is the thread's previous affinity mask.

Windows 95/98: The return value is 1. To succeed, hThread must be valid and dwThreadAffinityMask must be 1.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Requirements

  Windows NT/2000: Requires Windows NT 3.5 or later.
  Windows 95/98: Requires Windows 95 or later.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.

See Also

Processes and Threads Overview, Process and Thread Functions, GetProcessAffinityMask, OpenThread, SetThreadIdealProcessor