getProcessAffinityMask 函式 (winbase.h)
擷取指定進程的進程親和性遮罩,以及系統的系統親和性遮罩。
語法
BOOL GetProcessAffinityMask(
[in] HANDLE hProcess,
[out] PDWORD_PTR lpProcessAffinityMask,
[out] PDWORD_PTR lpSystemAffinityMask
);
參數
[in] hProcess
需要親和性遮罩之進程的控制碼。
此控制碼必須具有 PROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION 存取權限。 如需詳細資訊,請參閱 處理安全性和存取權限。
Windows Server 2003 和 Windows XP: 控制碼必須具有 PROCESS_QUERY_INFORMATION 存取權限。
[out] lpProcessAffinityMask
接收指定進程親和性遮罩之變數的指標。
[out] lpSystemAffinityMask
接收系統親和性遮罩之變數的指標。
傳回值
如果函式成功,則傳回值為非零值,而且函式會將 lpProcessAffinityMask 和 lpSystemAffinityMask 所指向的變數設定為適當的親和性遮罩。
在具有超過 64 個處理器的系統上,如果呼叫進程的執行緒位於單一處理器群組中,函式會將lpProcessAffinityMask 和 lpSystemAffinityMask所指向的變數設定為進程親和性遮罩,以及該群組作用中邏輯處理器的處理器遮罩。 如果呼叫進程包含多個群組中的執行緒,則函式會針對這兩個親和性遮罩傳回零。
如果函式失敗,傳回值為零,且 lpProcessAffinityMask 和 lpSystemAffinityMask 所指向的變數值是未定義。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
進程親和性遮罩是位向量,其中每個位都代表進程允許執行所在的處理器。 系統親和性遮罩是位向量,其中每個位都代表設定為系統的處理器。
進程親和性遮罩是系統親和性遮罩的子集。 進程只允許在設定為系統的處理器上執行。 因此,當系統親和性遮罩指定該處理器的 0 位時,進程親和性遮罩無法為處理器指定 1 位。
從 Windows 11 和 Windows Server 2022 開始,在超過 64 個處理器的系統上,依預設,進程和執行緒親和性會跨越系統中的所有處理器。 GetProcessAffinityMask函式會將lpProcessAffinityMask 和 lpSystemAffinityMask設定為進程和系統處理器遮罩,透過進程的主要群組。 如果進程已明確設定進程主要群組外部一或多個執行緒的親和性,則函式會針對這兩個同質遮罩傳回零。 不過,如果hHandle指定目前進程的控制碼,函式一律會使用呼叫執行緒的主要群組 (,預設與進程的主要群組相同) ,才能設定lpProcessAffinityMask 和 lpSystemAffinityMask。
規格需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |