Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengatur informasi untuk proses yang ditentukan.
Sintaksis
BOOL SetProcessInformation(
[in] HANDLE hProcess,
[in] PROCESS_INFORMATION_CLASS ProcessInformationClass,
LPVOID ProcessInformation,
[in] DWORD ProcessInformationSize
);
Parameter
[in] hProcess
Handel untuk proses. Handel ini harus memiliki hak akses PROCESS_SET_INFORMATION. Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.
[in] ProcessInformationClass
Anggota enumerasi PROCESS_INFORMATION_CLASS yang menentukan jenis informasi yang akan diatur.
ProcessInformation
Penunjuk ke objek yang berisi jenis informasi yang ditentukan oleh parameter ProcessInformationClass
Jika parameter ProcessInformationClass
Jika parameter ProcessInformationClass
Jika parameter ProcessInformationClass
Jika parameter
[in] ProcessInformationSize
Ukuran dalam byte struktur yang ditentukan oleh parameter ProcessInformation
Jika parameter
Jika parameter ProcessInformationClass
Jika parameter ProcessInformationClass
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Komentar
Untuk membantu meningkatkan performa sistem, aplikasi harus menggunakan fungsi
ProcessPowerThrottling memungkinkan kebijakan pembatasan pada suatu proses, yang dapat digunakan untuk menyeimbangkan performa dan efisiensi daya jika performa optimal tidak diperlukan.
Ketika proses memilih untuk mengaktifkan PROCESS_POWER_THROTTLING_EXECUTION_SPEED, proses akan diklasifikasikan sebagai EcoQoS. Sistem akan mencoba meningkatkan efisiensi daya melalui strategi seperti mengurangi frekuensi CPU atau menggunakan inti yang lebih hemat daya. EcoQoS harus digunakan ketika pekerjaan tidak berkontribusi pada pengalaman pengguna latar depan, yang memberikan masa pakai baterai yang lebih lama, dan mengurangi kebisingan panas dan kipas. EcoQoS tidak boleh digunakan untuk pengalaman pengguna kritis performa atau latar depan. (Sebelum Windows 11, tingkat EcoQoS tidak ada dan prosesnya diberi label lowQoS). Jika aplikasi tidak secara eksplisit mengaktifkan PROCESS_POWER_THROTTLING_EXECUTION_SPEED, sistem akan menggunakan heuristiknya sendiri untuk secara otomatis menyimpulkan tingkat Kualitas Layanan. Untuk informasi selengkapnya, lihat Kualitas Layanan.
Ketika proses memilih untuk mengaktifkan PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION, setiap permintaan resolusi timer saat ini yang dibuat oleh proses akan diabaikan. Timer milik proses tidak lagi dijamin kedaluwarsa dengan resolusi timer yang lebih tinggi, yang dapat meningkatkan efisiensi daya. Setelah secara eksplisit menonaktifkan PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION, sistem mengingat dan mematuhi permintaan resolusi timer sebelumnya oleh proses. Secara default di Windows 11 jika proses pemilik jendela menjadi sepenuhnya terkumpul, diminimalkan, atau tidak terlihat oleh pengguna akhir, dan tidak dapat didengar, Windows dapat secara otomatis mengabaikan permintaan resolusi timer dan dengan demikian tidak menjamin resolusi yang lebih tinggi daripada resolusi sistem default.
Contoh
Contoh berikut menunjukkan cara memanggil SetProcessInformation dengan ProcessMemoryPriority untuk mengatur prioritas memori rendah sebagai default untuk proses panggilan.
DWORD ErrorCode;
BOOL Success;
MEMORY_PRIORITY_INFORMATION MemPrio;
//
// Set low memory priority on the current process.
//
ZeroMemory(&MemPrio, sizeof(MemPrio));
MemPrio.MemoryPriority = MEMORY_PRIORITY_LOW;
Success = SetProcessInformation(GetCurrentProcess(),
ProcessMemoryPriority,
&MemPrio,
sizeof(MemPrio));
if (!Success) {
ErrorCode = GetLastError();
fprintf(stderr, "Set process memory priority failed: %d\n", ErrorCode);
goto cleanup;
}
Contoh berikut menunjukkan cara memanggil SetProcessInformation dengan ProcessPowerThrottling untuk mengontrol Kualitas Layanan proses.
PROCESS_POWER_THROTTLING_STATE PowerThrottling;
RtlZeroMemory(&PowerThrottling, sizeof(PowerThrottling));
PowerThrottling.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION;
//
// EcoQoS
// Turn EXECUTION_SPEED throttling on.
// ControlMask selects the mechanism and StateMask declares which mechanism should be on or off.
//
PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
PowerThrottling.StateMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
SetProcessInformation(GetCurrentProcess(),
ProcessPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
//
// HighQoS
// Turn EXECUTION_SPEED throttling off.
// ControlMask selects the mechanism and StateMask is set to zero as mechanisms should be turned off.
//
PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
PowerThrottling.StateMask = 0;
SetProcessInformation(GetCurrentProcess(),
ProcessPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
Contoh berikut menunjukkan cara memanggil SetProcessInformation
PROCESS_POWER_THROTTLING_STATE PowerThrottling;
RtlZeroMemory(&PowerThrottling, sizeof(PowerThrottling));
PowerThrottling.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION;
//
// Ignore Timer Resolution Requests.
// Turn IGNORE_TIMER_RESOLUTION throttling on.
// ControlMask selects the mechanism and StateMask declares which mechanism should be on or off.
//
PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION;
PowerThrottling.StateMask = PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION;
SetProcessInformation(GetCurrentProcess(),
ProcessPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
//
// Always honor Timer Resolution Requests.
// Turn IGNORE_TIMER_RESOLUTION throttling off.
// ControlMask selects the mechanism and StateMask is set to zero as mechanisms should be turned off.
//
PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION;
PowerThrottling.StateMask = 0;
SetProcessInformation(GetCurrentProcess(),
ProcessPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
Contoh berikut menunjukkan cara memanggil SetProcessInformation dengan ProcessPowerThrottling untuk mengatur ulang ke perilaku terkelola sistem default.
PROCESS_POWER_THROTTLING_STATE PowerThrottling;
RtlZeroMemory(&PowerThrottling, sizeof(PowerThrottling));
PowerThrottling.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION;
//
// Let system manage all power throttling. ControlMask is set to 0 as we don't want
// to control any mechanisms.
//
PowerThrottling.ControlMask = 0;
PowerThrottling.StateMask = 0;
SetProcessInformation(GetCurrentProcess(),
ProcessPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
Persyaratan
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows 8 [aplikasi desktop | Aplikasi UWP] |
| server minimum yang didukung |
Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
| Platform Target |
Windows |
| Header |
processthreadsapi.h (termasuk Windows.h) |
| Pustaka |
Kernel32.lib |
| DLL |
Kernel32.dll |
Lihat juga
fungsi GetProcessInformation, fungsi SetThreadInformation, struktur MEMORY_PRIORITY_INFORMATION, fungsi SetProcessInformation, enumerasi PROCESS_INFORMATION_CLASS, struktur OVERRIDE_PREFETCH_PARAMETER