Fungsi AssignProcessToJobObject (jobapi2.h)

Menetapkan proses ke objek pekerjaan yang sudah ada.

Sintaks

BOOL AssignProcessToJobObject(
  [in] HANDLE hJob,
  [in] HANDLE hProcess
);

Parameter

[in] hJob

Handel ke objek pekerjaan tempat proses akan dikaitkan. Fungsi CreateJobObject atau OpenJobObject mengembalikan handel ini. Handel harus memiliki hak akses JOB_OBJECT_ASSIGN_PROCESS. Untuk informasi selengkapnya, lihat Keamanan Objek Pekerjaan dan Hak Akses.

[in] hProcess

Handel ke proses untuk mengaitkan dengan objek pekerjaan. Handel harus memiliki hak akses PROCESS_SET_QUOTA dan PROCESS_TERMINATE. Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.

Jika proses sudah dikaitkan dengan pekerjaan, pekerjaan yang ditentukan oleh hJob harus kosong atau harus dalam hierarki pekerjaan berlapis tempat proses sudah berada, dan tidak dapat memiliki batas UI yang ditetapkan (SetInformationJobObject dengan JobObjectBasicUIRestrictions). Untuk informasi selengkapnya, lihat Keterangan.

Windows 7, Windows Server 2008 R2, Windows XP dengan SP3, Windows Server 2008, Windows Vista, dan Windows Server 2003: Proses ini belum boleh ditetapkan ke pekerjaan; jika ya, fungsi gagal dengan ERROR_ACCESS_DENIED. Perilaku ini berubah mulai windows 8 dan Windows Server 2012.

Layanan Terminal: Semua proses dalam pekerjaan harus berjalan dalam sesi yang sama dengan pekerjaan.

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

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

Keterangan

Setelah Anda mengaitkan proses dengan objek pekerjaan menggunakan AssignProcessToJobObject, proses tunduk pada batas yang ditetapkan untuk pekerjaan tersebut. Untuk mengatur batas pekerjaan, gunakan fungsi SetInformationJobObject .

Jika pekerjaan memiliki batas waktu mode pengguna, dan batas waktu telah habis, AssignProcessToJobObject gagal dan proses yang ditentukan dihentikan. Jika batas waktu akan terlampaui dengan mengaitkan proses, AssignProcessToJobObject masih berhasil. Namun, pelanggaran batas waktu akan dilaporkan. Jika pekerjaan memiliki batas proses aktif, dan batas akan terlampaui dengan mengaitkan proses ini, AssignProcessToJobObject gagal, dan proses yang ditentukan dihentikan.

Operasi memori yang dilakukan oleh proses yang terkait dengan pekerjaan yang memiliki batas memori tunduk pada batas memori. Operasi memori yang dilakukan oleh proses sebelum dikaitkan dengan pekerjaan tidak diperiksa oleh AssignProcessToJobObject.

Jika proses sudah berjalan dan pekerjaan memiliki batasan keamanan, AssignProcessToJobObject mungkin gagal. Misalnya, jika token utama proses berisi grup administrator lokal, tetapi objek pekerjaan memiliki batasan keamanan JOB_OBJECT_SECURITY_NO_ADMIN, fungsi gagal. Jika pekerjaan memiliki batasan keamanan JOB_OBJECT_SECURITY_ONLY_TOKEN, proses harus dibuat ditangguhkan. Untuk membuat proses yang ditangguhkan, panggil fungsi CreateProcess dengan bendera CREATE_SUSPENDED.

Proses dapat dikaitkan dengan lebih dari satu pekerjaan dalam hierarki pekerjaan berlapis. Untuk kelas prioritas, afinitas, biaya penerapan, batas waktu eksekusi per proses, batas kelas penjadwalan, dan minimum dan maksimum set kerja, proses mewarisi batas efektif yang merupakan batas paling ketat dari semua pekerjaan dalam rantai pekerjaan induknya. Untuk batas sumber daya lainnya, proses ini mewarisi batas dari pekerjaan langsungnya dalam hierarki. Informasi akuntansi ditambahkan ke pekerjaan langsung dan dikumpulkan di setiap pekerjaan induk dalam rantai pekerjaan. Secara default, semua proses anak dikaitkan dengan pekerjaan langsung dan setiap pekerjaan dalam rantai pekerjaan induk. Untuk membuat proses anak yang bukan bagian dari rantai pekerjaan yang sama, panggil fungsi CreateProcess dengan bendera CREATE_BREAKAWAY_FROM_JOB. Proses anak memisahkan diri dari setiap pekerjaan dalam rantai pekerjaan kecuali pekerjaan dalam rantai tidak memungkinkan pelarian. Dalam hal ini, proses anak tidak memisahkan diri dari pekerjaan itu atau pekerjaan apa pun di atasnya dalam rantai pekerjaan. Untuk informasi selengkapnya, lihat Pekerjaan Berlapis.

Windows 7, Windows Server 2008 R2, Windows XP dengan SP3, Windows Server 2008, Windows Vista, dan Windows Server 2003: Proses hanya dapat dikaitkan dengan satu pekerjaan. Proses mewarisi batasan dari pekerjaan yang terkait dengannya dan menambahkan informasi akuntansinya ke pekerjaan. Jika proses dikaitkan dengan pekerjaan, semua proses anak yang dibuatnya dikaitkan dengan pekerjaan tersebut secara default. Untuk membuat proses anak yang bukan bagian dari pekerjaan yang sama, panggil fungsi CreateProcess dengan bendera CREATE_BREAKAWAY_FROM_JOB. Proses dapat dikaitkan dengan lebih dari satu pekerjaan mulai windows 8 dan Windows Server 2012.

Windows 7, Windows Server 2008 R2, Windows Server 2008, dan Windows Vista: Jika proses sedang dipantau oleh Program Compatibility Assistant (PCA), proses tersebut ditempatkan ke dalam pekerjaan kompatibilitas. Oleh karena itu, proses harus dibuat menggunakan CREATE_BREAKAWAY_FROM_JOB sebelum dapat ditempatkan di pekerjaan lain. Atau, Anda dapat menyematkan manifes aplikasi yang menentukan tingkat Kontrol Akun Pengguna (UAC) di aplikasi Anda dan PCA tidak akan menambahkan proses ke pekerjaan kompatibilitas. Untuk informasi selengkapnya, lihat Persyaratan Pengembangan Aplikasi untuk Kompatibilitas Kontrol Akun Pengguna.

Jika pekerjaan atau pekerjaan induknya dalam rantai pekerjaan berakhir saat AssignProcessToJob dipanggil, fungsi gagal.

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0500 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header jobapi2.h (sertakan Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CreateJobObject

CreateProcess

Objek Pekerjaan

OpenJobObject

Fungsi Proses dan Utas

SetInformationJobObject