Fungsi ExitWindowsEx (winuser.h)
Mencatat pengguna interaktif, mematikan sistem, atau mematikan dan menghidupkan ulang sistem. Ini mengirim pesan WM_QUERYENDSESSION ke semua aplikasi untuk menentukan apakah mereka dapat dihentikan.
Sintaks
BOOL ExitWindowsEx(
[in] UINT uFlags,
[in] DWORD dwReason
);
Parameter
[in] uFlags
Jenis matikan. Parameter ini harus menyertakan salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Dimulai dengan Windows 8: Anda dapat menyiapkan sistem untuk startup yang lebih cepat dengan menggabungkan bendera EWX_HYBRID_SHUTDOWN dengan bendera EWX_SHUTDOWN . |
|
Mematikan semua proses yang berjalan dalam sesi masuk proses yang disebut fungsi ExitWindowsEx . Kemudian log pengguna nonaktif.
Bendera ini hanya dapat digunakan oleh proses yang berjalan dalam sesi masuk pengguna interaktif. |
|
Mematikan sistem dan mematikan daya. Sistem harus mendukung fitur matikan.
Proses panggilan harus memiliki hak istimewa SE_SHUTDOWN_NAME. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. |
|
Mematikan sistem lalu menghidupkan ulang sistem.
Proses panggilan harus memiliki hak istimewa SE_SHUTDOWN_NAME. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. |
|
Mematikan sistem lalu memulai ulang sistem, serta aplikasi apa pun yang telah didaftarkan untuk memulai ulang menggunakan fungsi RegisterApplicationRestart . Aplikasi ini menerima pesan WM_QUERYENDSESSION dengan lParam diatur ke nilai ENDSESSION_CLOSEAPP. Untuk informasi selengkapnya, lihat Panduan untuk Aplikasi. |
|
Mematikan sistem ke titik di mana aman untuk mematikan daya. Semua buffer file telah dibersihkan ke disk, dan semua proses yang berjalan telah berhenti.
Proses panggilan harus memiliki hak istimewa SE_SHUTDOWN_NAME. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. Menentukan bendera ini tidak akan mematikan daya meskipun sistem mendukung fitur matikan. Anda harus menentukan EWX_POWEROFF untuk melakukan ini. Windows XP dengan SP1: Jika sistem mendukung fitur matikan, menentukan bendera ini akan mematikan daya. |
Parameter ini dapat secara opsional menyertakan salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Bendera ini tidak berpengaruh jika layanan terminal diaktifkan. Jika tidak, sistem tidak mengirim pesan WM_QUERYENDSESSION . Hal ini dapat menyebabkan aplikasi kehilangan data. Oleh karena itu, Anda hanya boleh menggunakan bendera ini dalam keadaan darurat. |
|
Memaksa proses untuk mengakhiri jika mereka tidak merespons pesan WM_QUERYENDSESSION atau WM_ENDSESSION dalam interval batas waktu. Untuk informasi selengkapnya, lihat Keterangan. |
[in] dwReason
Alasan untuk memulai pematian. Parameter ini harus menjadi salah satu kode alasan pematian sistem.
Jika parameter ini nol, kode alasan SHTDN_REASON_FLAG_PLANNED tidak akan diatur dan oleh karena itu tindakan default adalah pematian tidak terdefinisi yang dicatat sebagai "Tidak ada judul untuk alasan ini yang dapat ditemukan". Secara default, ini juga merupakan pematian yang tidak dienkripsi. Bergantung pada bagaimana sistem dikonfigurasi, pematian yang tidak terencana memicu pembuatan file yang berisi informasi status sistem, yang dapat menunda pematian. Oleh karena itu, jangan gunakan nol untuk parameter ini.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol. Karena fungsi dijalankan secara asinkron, nilai pengembalian bukan nol menunjukkan bahwa pematian telah dimulai. Ini tidak menunjukkan apakah pematian akan berhasil. Ada kemungkinan bahwa sistem, pengguna, atau aplikasi lain akan membatalkan pematian.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Fungsi ExitWindowsEx kembali segera setelah memulai proses pematian. Pematian atau logoff kemudian berlanjut secara asinkron. Fungsi ini dirancang untuk menghentikan semua proses dalam sesi masuk pemanggil. Oleh karena itu, jika Anda bukan pengguna interaktif, fungsi dapat berhasil tanpa benar-benar mematikan komputer. Jika Anda bukan pengguna interaktif, gunakan fungsi InitiateSystemShutdown atau InitiateSystemShutdownEx .
Nilai pengembalian bukan nol tidak berarti logoff berhasil atau akan berhasil. Pematian adalah proses asinkron, dan dapat terjadi lama setelah panggilan API kembali, atau tidak sama sekali. Bahkan jika nilai batas waktu adalah nol, pematian masih dapat dibatalkan oleh aplikasi, layanan, atau bahkan sistem. Nilai pengembalian bukan nol menunjukkan bahwa validasi hak dan parameter berhasil dan sistem menerima permintaan matikan.
Ketika fungsi ini dipanggil, pemanggil harus menentukan apakah aplikasi dengan perubahan yang belum disimpan harus ditutup secara paksa atau tidak. Jika pemanggil memilih untuk tidak memaksa aplikasi ini untuk menutup dan aplikasi dengan perubahan yang tidak disimpan berjalan pada sesi konsol, pematian akan tetap berlangsung sampai pengguna masuk ke sesi konsol membatalkan pematian, menyimpan perubahan, menutup aplikasi, atau memaksa aplikasi untuk menutup. Selama periode ini, penonaktifan mungkin tidak dibatalkan kecuali oleh pengguna konsol, dan penonaktifan lain mungkin tidak dimulai.
Memanggil fungsi ini dengan nilai parameter uFlags yang diatur ke EWX_FORCE menghindari situasi ini. Ingatlah bahwa melakukan ini dapat mengakibatkan hilangnya data.
Untuk mengatur prioritas matikan untuk aplikasi yang relatif terhadap aplikasi lain dalam sistem, gunakan fungsi SetProcessShutdownParameters .
Selama operasi penonaktifan atau log-off, aplikasi yang berjalan diizinkan dalam jumlah waktu tertentu untuk merespons permintaan matikan. Jika waktu ini kedaluwarsa sebelum semua aplikasi berhenti, sistem menampilkan antarmuka pengguna yang memungkinkan pengguna untuk mematikan sistem secara paksa atau membatalkan permintaan matikan. Jika nilai EWX_FORCE ditentukan, sistem memaksa menjalankan aplikasi untuk berhenti ketika waktu kedaluwarsa.
Jika nilai EWX_FORCEIFHUNG ditentukan, sistem memaksa aplikasi gantung ditutup dan tidak menampilkan kotak dialog.
Proses konsol menerima pesan pemberitahuan terpisah, CTRL_SHUTDOWN_EVENT atau CTRL_LOGOFF_EVENT, karena situasinya menjamin. Proses konsol merutekan pesan ini ke fungsi HandlerRoutine-nya . ExitWindowsEx mengirimkan pesan pemberitahuan ini secara asinkron; dengan demikian, aplikasi tidak dapat mengasumsikan bahwa pesan pemberitahuan konsol telah ditangani ketika panggilan ke ExitWindowsEx kembali.
Untuk mematikan atau memulai ulang sistem, proses panggilan harus menggunakan fungsi AdjustTokenPrivileges untuk mengaktifkan hak istimewa SE_SHUTDOWN_NAME. Untuk informasi selengkapnya, lihat Menjalankan dengan Hak Istimewa Khusus.
Contoh
Misalnya, lihat Cara Mematikan Sistem.
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 | winuser.h (termasuk Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-misc-l1-1-0 (diperkenalkan di Windows 8) |