Fungsi SetProcessAffinityMask (winbase.h)

Mengatur masker afinitas prosesor untuk utas proses yang ditentukan.

Sintaks

BOOL SetProcessAffinityMask(
  [in] HANDLE    hProcess,
  [in] DWORD_PTR dwProcessAffinityMask
);

Parameter

[in] hProcess

Handel untuk proses yang masker afinitasnya akan diatur. Handel ini harus memiliki hak akses PROCESS_SET_INFORMATION . Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.

[in] dwProcessAffinityMask

Masker afinitas untuk utas proses.

Pada sistem dengan lebih dari 64 prosesor, masker afinitas harus menentukan prosesor dalam satu grup prosesor.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Jika masker afinitas proses meminta prosesor yang tidak dikonfigurasi dalam sistem, kode kesalahan terakhir adalah ERROR_INVALID_PARAMETER.

Pada sistem dengan lebih dari 64 prosesor, jika proses panggilan berisi utas di lebih dari satu grup prosesor, kode kesalahan terakhir adalah ERROR_INVALID_PARAMETER.

Keterangan

Masker afinitas proses adalah vektor bit di mana setiap bit mewakili prosesor logis tempat utas proses diizinkan untuk dijalankan. Nilai masker afinitas proses harus merupakan subset dari nilai masker afinitas sistem yang diperoleh oleh fungsi GetProcessAffinityMask . Proses hanya diizinkan untuk berjalan pada prosesor yang dikonfigurasi ke dalam sistem. Oleh karena itu, masker afinitas proses tidak dapat menentukan 1 bit untuk prosesor ketika masker afinitas sistem menentukan 0 bit untuk prosesor tersebut.

Afinitas proses diwariskan oleh proses anak apa pun atau proses lokal yang baru dibuat.

Jangan panggil SetProcessAffinityMask di DLL yang mungkin dipanggil oleh proses selain proses Anda sendiri.

Pada sistem dengan lebih dari 64 prosesor, fungsi SetProcessAffinityMask dapat digunakan untuk mengatur masker afinitas proses hanya untuk proses dengan utas dalam satu grup prosesor. Gunakan fungsi SetThreadAffinityMask untuk mengatur masker afinitas untuk utas individual dalam beberapa grup. Ini secara efektif mengubah penetapan grup proses.

Dimulai dengan Windows 11 dan Windows Server 2022, pada sistem dengan lebih dari 64 prosesor, proses dan afinitas utas mencakup semua prosesor dalam sistem, di semua grup prosesor, secara default. Alih-alih selalu gagal jika proses panggilan berisi utas dalam lebih dari satu grup prosesor, fungsi SetProcessAffinityMask gagal (mengembalikan nol dengan kode kesalahan terakhir ERROR_INVALID_PARAMETER ) jika proses telah secara eksplisit mengatur afinitas satu atau beberapa utasnya di luar grup utama proses.

Persyaratan

   
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CreateProcess

GetProcessAffinityMask

Beberapa Prosesor

Fungsi Proses dan Utas

Proses

Grup Prosesor

SetThreadAffinityMask