SetProcessAffinityMask 함수(winbase.h)
지정된 프로세스의 스레드에 대한 프로세서 선호도 마스크를 설정합니다.
구문
BOOL SetProcessAffinityMask(
[in] HANDLE hProcess,
[in] DWORD_PTR dwProcessAffinityMask
);
매개 변수
[in] hProcess
선호도 마스크를 설정할 프로세스에 대한 핸들입니다. 이 핸들에는 PROCESS_SET_INFORMATION 액세스 권한이 있어야 합니다. 자세한 내용은 프로세스 보안 및 액세스 권한을 참조하세요.
[in] dwProcessAffinityMask
프로세스의 스레드에 대한 선호도 마스크입니다.
프로세서가 64개 이상인 시스템에서 선호도 마스크는 단일 프로세서 그룹에 프로세서를 지정해야 합니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
프로세스 선호도 마스크가 시스템에 구성되지 않은 프로세서를 요청하는 경우 마지막 오류 코드가 ERROR_INVALID_PARAMETER.
64개 이상의 프로세서가 있는 시스템에서 호출 프로세스에 둘 이상의 프로세서 그룹에 스레드가 포함된 경우 마지막 오류 코드가 ERROR_INVALID_PARAMETER.
설명
프로세스 선호도 마스크는 각 비트가 프로세스의 스레드를 실행할 수 있는 논리 프로세서를 나타내는 비트 벡터입니다. 프로세스 선호도 마스크의 값은 GetProcessAffinityMask 함수에서 가져온 시스템 선호도 마스크 값의 하위 집합이어야 합니다. 프로세스는 시스템에 구성된 프로세서에서만 실행할 수 있습니다. 따라서 시스템 선호도 마스크가 해당 프로세서에 대해 0비트 를 지정하는 경우 프로세스 선호도 마스크는 프로세서에 대해 1비트 를 지정할 수 없습니다.
프로세스 선호도는 자식 프로세스 또는 새로 인스턴스화된 로컬 프로세스에서 상속됩니다.
사용자 고유가 아닌 다른 프로세스에서 호출할 수 있는 DLL에서 SetProcessAffinityMask 를 호출하지 마세요.
프로세서가 64개 이상인 시스템에서 SetProcessAffinityMask 함수를 사용하여 단일 프로세서 그룹의 스레드가 있는 프로세스에 대해서만 프로세스 선호도 마스크를 설정할 수 있습니다. SetThreadAffinityMask 함수를 사용하여 여러 그룹의 개별 스레드에 대한 선호도 마스크를 설정합니다. 이렇게 하면 프로세스의 그룹 할당이 효과적으로 변경됩니다.
Windows 11 및 Windows Server 2022부터 64개 이상의 프로세서가 있는 시스템에서 프로세스 및 스레드 친화성은 기본적으로 모든 프로세서 그룹에 걸쳐 시스템의 모든 프로세서에 걸쳐 있습니다. 호출 프로세스에 둘 이상의 프로세서 그룹에 스레드가 포함된 경우 항상 실패하는 대신 프로세스가 프로세스의 기본 그룹 외부에 있는 하나 이상의 스레드의 선호도를 명시적으로 설정한 경우 SetProcessAffinityMask 함수가 실패합니다(마지막 오류 코드가 ERROR_INVALID_PARAMETER 0을 반환함).
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |