Bendera Pembuatan Proses
Bendera pembuatan proses berikut digunakan oleh fungsi CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, dan CreateProcessWithTokenW . Mereka dapat ditentukan dalam kombinasi apa pun, kecuali sebagaimana disebutkan.
Contoh
BOOL creationResult;
creationResult = CreateProcess(
NULL, // No module name (use command line)
cmdLine, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, // creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&startupInfo, // Pointer to STARTUPINFO structure
&processInformation); // Pointer to PROCESS_INFORMATION structure
Contoh dari sampel klasik Windows di GitHub.
Bendera
Konstanta/nilai | Deskripsi |
---|---|
|
Proses anak dari proses yang terkait dengan pekerjaan tidak terkait dengan pekerjaan. Jika proses panggilan tidak terkait dengan pekerjaan, konstanta ini tidak berpengaruh. Jika proses panggilan dikaitkan dengan pekerjaan, pekerjaan harus menetapkan batas JOB_OBJECT_LIMIT_BREAKAWAY_OK . |
|
Proses baru tidak mewarisi mode kesalahan dari proses panggilan. Sebaliknya, proses baru mendapatkan mode kesalahan default. Fitur ini sangat berguna untuk aplikasi shell multithreaded yang berjalan dengan kesalahan keras dinonaktifkan. Perilaku default adalah agar proses baru mewarisi mode kesalahan pemanggil. Mengatur bendera ini mengubah perilaku default tersebut. |
|
Proses baru memiliki konsol baru, alih-alih mewarisi konsol induknya (default). Untuk informasi selengkapnya, lihat Pembuatan Konsol. Bendera ini tidak dapat digunakan dengan DETACHED_PROCESS. |
|
Proses baru adalah proses akar dari grup proses baru. Grup proses mencakup semua proses yang merupakan keturunan dari proses akar ini. Pengidentifikasi proses grup proses baru sama dengan pengidentifikasi proses, yang dikembalikan dalam parameter lpProcessInformation . Grup proses digunakan oleh fungsi GenerateConsoleCtrlEvent untuk mengaktifkan pengiriman sinyal CTRL+BREAK ke sekelompok proses konsol. Jika bendera ini ditentukan, sinyal CTRL+C akan dinonaktifkan untuk semua proses dalam grup proses baru. Bendera ini diabaikan jika ditentukan dengan CREATE_NEW_CONSOLE. |
|
Prosesnya adalah aplikasi konsol yang sedang dijalankan tanpa jendela konsol. Oleh karena itu, handel konsol untuk aplikasi tidak diatur. Bendera ini diabaikan jika aplikasi bukan aplikasi konsol, atau jika digunakan dengan CREATE_NEW_CONSOLE atau DETACHED_PROCESS. |
|
Proses ini akan dijalankan sebagai proses yang dilindungi. Sistem membatasi akses ke proses yang dilindungi dan utas proses yang dilindungi. Untuk informasi selengkapnya tentang bagaimana proses dapat berinteraksi dengan proses yang dilindungi, lihat Keamanan Proses dan Hak Akses. Untuk mengaktifkan proses yang dilindungi, biner harus memiliki tanda tangan khusus. Tanda tangan ini disediakan oleh Microsoft tetapi saat ini tidak tersedia untuk biner non-Microsoft. Saat ini ada empat proses yang dilindungi: fondasi media, mesin audio, pelaporan kesalahan Windows, dan sistem. Komponen yang dimuat ke biner ini juga harus ditandatangani. Perusahaan multimedia dapat memanfaatkan dua proses pertama yang dilindungi. Untuk informasi selengkapnya, lihat Gambaran Umum Jalur Media Terproteksi. Windows Server 2003 dan Windows XP: Nilai ini tidak didukung. |
|
Memungkinkan penelepon untuk menjalankan proses anak yang melewati pembatasan proses yang biasanya akan diterapkan secara otomatis ke proses. |
|
Bendera ini memungkinkan proses aman, yang berjalan di lingkungan keamanan Virtualization-Based, untuk diluncurkan. |
|
Bendera ini hanya valid ketika memulai aplikasi berbasis Windows 16-bit. Jika diatur, proses baru berjalan di Virtual DOS Machine (VDM) privat. Secara default, semua aplikasi berbasis Windows 16-bit berjalan sebagai utas dalam satu VDM bersama. Keuntungan berjalan secara terpisah adalah bahwa crash hanya mengakhiri VDM tunggal; program lain yang berjalan dalam VDM yang berbeda terus berfungsi secara normal. Selain itu, aplikasi berbasis Windows 16-bit yang dijalankan dalam VDM terpisah memiliki antrean input terpisah. Itu berarti bahwa jika satu aplikasi berhenti merespons sesaat, aplikasi di VDM terpisah terus menerima input. Kerugian berjalan secara terpisah adalah dibutuhkan lebih banyak memori untuk melakukannya secara signifikan. Anda harus menggunakan bendera ini hanya jika pengguna meminta agar aplikasi 16-bit harus berjalan di VDM mereka sendiri. |
|
Bendera hanya valid saat memulai aplikasi berbasis Windows 16-bit. Jika sakelar DefaultSeparateVDM di bagian Windows WIN.INI TRUE, bendera ini akan menggantikan sakelar. Proses baru dijalankan di Virtual DOS Machine bersama. |
|
Alur utama proses baru dibuat dalam status ditangguhkan, dan tidak berjalan sampai fungsi ResumeThread dipanggil. |
|
Jika bendera ini diatur, blok lingkungan yang ditunjukkan oleh lpEnvironment menggunakan karakter Unicode. Jika tidak, blok lingkungan menggunakan karakter ANSI. |
|
Utas panggilan dimulai dan men-debug proses baru. Ini dapat menerima semua peristiwa debug terkait menggunakan fungsi WaitForDebugEvent . |
|
Alur panggilan dimulai dan men-debug proses baru dan semua proses anak yang dibuat oleh proses baru. Ini dapat menerima semua peristiwa debug terkait menggunakan fungsi WaitForDebugEvent . Proses yang menggunakan DEBUG_PROCESS menjadi akar rantai penelusuran kesalahan. Ini berlanjut sampai proses lain dalam rantai dibuat dengan DEBUG_PROCESS. Jika bendera ini dikombinasikan dengan DEBUG_ONLY_THIS_PROCESS, pemanggil hanya men-debug proses baru, bukan proses turunan apa pun. |
|
Untuk proses konsol, proses baru tidak mewarisi konsol induknya (default). Proses baru dapat memanggil fungsi AllocConsole di lain waktu untuk membuat konsol. Untuk informasi selengkapnya, lihat Pembuatan Konsol. Nilai ini tidak dapat digunakan dengan CREATE_NEW_CONSOLE. |
|
Proses ini dibuat dengan informasi startup yang diperluas; parameter lpStartupInfo menentukan struktur STARTUPINFOEX . Windows Server 2003 dan Windows XP: Nilai ini tidak didukung. |
|
Proses ini mewarisi afinitas induknya. Jika proses induk memiliki utas dalam lebih dari satu grup prosesor, proses baru mewarisi afinitas relatif grup dari grup arbitrer yang digunakan oleh induk. Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak didukung. |
Keterangan
Pada Windows 32-bit, aplikasi 16-bit disimulasikan oleh ntvdm.exe, tidak berjalan sebagai proses individual. Oleh karena itu, bendera pembuatan proses berlaku untuk ntvdm.exe. Karena ntvdm.exe bertahan setelah Anda menjalankan aplikasi 16-bit pertama, saat Anda meluncurkan aplikasi 16-bit lain, bendera pembuatan baru tidak diterapkan, kecuali untuk CREATE_NEW_CONSOLE dan CREATE_SEPARATE_WOW_VDM, yang membuat ntvdm.exe baru.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
Header |
|