Fungsi SetProcessDEPPolicy (winbase.h)

Mengubah pengaturan pencegahan eksekusi data (DEP) dan emulasi thunk DEP-ATL untuk proses 32-bit.

Sintaks

BOOL SetProcessDEPPolicy(
  [in] DWORD dwFlags
);

Parameter

[in] dwFlags

DWORD yang bisa menjadi satu atau beberapa nilai berikut.

Nilai Makna
0
Jika kebijakan sistem DEP adalah OptIn atau OptOut dan DEP diaktifkan untuk proses, mengatur dwFlags ke 0 akan menonaktifkan DEP untuk proses tersebut.
PROCESS_DEP_ENABLE
0x00000001
Mengaktifkan DEP secara permanen pada proses saat ini. Setelah DEP diaktifkan untuk proses dengan mengatur PROCESS_DEP_ENABLE, DEP tidak dapat dinonaktifkan selama masa proses.
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
0x00000002
Menonaktifkan emulasi thunk DEP-ATL untuk proses saat ini, yang mencegah sistem mencegat kesalahan NX yang berasal dari lapisan thunk Pustaka Templat Aktif (ATL). Untuk informasi lebih lanjut, lihat bagian Keterangan. Bendera ini hanya dapat ditentukan dengan PROCESS_DEP_ENABLE.

Nilai kembali

Jika fungsi berhasil, fungsi akan mengembalikan TRUE.

Jika fungsi gagal, fungsi akan mengembalikan FALSE. Untuk mengambil nilai kesalahan yang ditentukan untuk fungsi ini, panggil GetLastError.

Keterangan

Fungsi SetProcessDEPPolicy mengambil alih kebijakan DEP sistem untuk proses saat ini kecuali kebijakan DEP-nya ditentukan saat pembuatan proses. Pengaturan kebijakan DEP sistem harus OptIn atau OptOut. Jika kebijakan DEP sistem AlwaysOff atau AlwaysOn, SetProcessDEPPolicy mengembalikan kesalahan. Setelah DEP diaktifkan untuk proses, panggilan berikutnya ke SetProcessDEPPolicy diabaikan.

Kebijakan DEP yang ditentukan pada pembuatan proses dengan atribut PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY tidak dapat diubah selama masa proses. Dalam hal ini, panggilan ke SetProcessDEPPolicy gagal dengan ERROR_ACCESS_DENIED.

SetProcessDEPPolicy hanya didukung untuk proses 32-bit. Jika fungsi ini dipanggil pada proses 64-bit, fungsi ini gagal dengan ERROR_NOT_SUPPORTED.

Aplikasi yang ditulis ke ATL 7.1 dan yang lebih lama dapat mencoba mengeksekusi kode pada halaman yang ditandai sebagai tidak dapat dieksekusi, yang memicu kesalahan NX dan mengakhiri aplikasi. Emulasi thunk DEP-ATL memungkinkan aplikasi yang sebaliknya akan memicu kesalahan NX untuk dijalankan dengan DEP diaktifkan. Untuk informasi tentang versi ATL, lihat Nomor Versi ATL dan MFC.

Jika emulasi thunk DEP-ATL diaktifkan, sistem mencegat kesalahan NX, meniru instruksi, dan menangani pengecualian sehingga aplikasi dapat terus berjalan. Jika emulasi thunk DEP-ATL dinonaktifkan dengan mengatur PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION untuk proses, kesalahan NX tidak dicegat, yang berguna saat menguji aplikasi untuk kompatibilitas dengan DEP.

Tabel berikut ini meringkas interaksi antara kebijakan DEP sistem, emulasi thunk DEP-ATL, dan SetProcessDEPPolicy. Untuk mendapatkan pengaturan kebijakan DEP sistem, gunakan fungsi GetSystemDEPPolicy .

Kebijakan DEP sistem Perilaku DEP DEP_ATL perilaku emulasi thunk Perilaku SetProcessDEPPolicy
AlwaysOff

0

Dinonaktifkan untuk sistem operasi dan semua proses. Tidak dapat diterapkan. Mengembalikan kesalahan.
AlwaysOn

1

Diaktifkan untuk sistem operasi dan semua proses. Nonaktif. Mengembalikan kesalahan.
Optin

2

Konfigurasi default untuk versi klien Windows.

Diaktifkan untuk sistem operasi dan dinonaktifkan untuk proses nonsystem. Administrator dapat secara eksplisit mengaktifkan DEP untuk file yang dapat dieksekusi yang dipilih. Tidak dapat diterapkan. DEP dapat diaktifkan untuk proses saat ini.

Jika DEP diaktifkan untuk proses saat ini, emulasi thunk DEP-ATL dapat dinonaktifkan untuk proses tersebut.

OptOut

3

Konfigurasi default untuk versi Windows Server.

Diaktifkan untuk sistem operasi dan semua proses. Administrator dapat secara eksplisit menonaktifkan DEP untuk file yang dapat dieksekusi yang dipilih. Aktif. DEP dapat dinonaktifkan untuk proses saat ini.

Jika DEP dinonaktifkan untuk proses saat ini, emulasi thunk DEP-ATL secara otomatis dinonaktifkan untuk proses tersebut.

 

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista dengan SP1, Windows XP dengan SP3 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Pencegahan Eksekusi Data

GetProcessDEPPolicy

GetSystemDEPPolicy