Funzione GetPriorityClass (processthreadsapi.h)
Recupera la classe di priorità per il processo specificato. Questo valore, insieme al valore di priorità di ciascun thread del processo, determina il livello di priorità base di ogni thread.
Sintassi
DWORD GetPriorityClass(
[in] HANDLE hProcess
);
Parametri
[in] hProcess
Handle per il processo.
L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION . Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso.
Windows Server 2003 e Windows XP: L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION .
Valore restituito
Se la funzione ha esito positivo, il valore restituito è la classe priority del processo specificato.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
La classe priority del processo è uno dei valori seguenti.
Codice/valore restituito | Descrizione |
---|---|
|
Processo con priorità superiore a NORMAL_PRIORITY_CLASS ma inferiore HIGH_PRIORITY_CLASS. |
|
Processo con priorità superiore a IDLE_PRIORITY_CLASS ma inferiore NORMAL_PRIORITY_CLASS. |
|
Processo che esegue attività critiche che devono essere eseguite immediatamente per l'esecuzione corretta. I thread di un processo di classe ad alta priorità annullano i thread dei processi di classe normale o inattiva. Un esempio è l'elenco attività, che deve rispondere rapidamente quando viene chiamato dall'utente, indipendentemente dal carico sul sistema operativo. Usare estrema attenzione quando si usa la classe ad alta priorità, perché un'applicazione con associazione a CPU a priorità elevata può usare quasi tutti i cicli disponibili. |
|
Processo i cui thread vengono eseguiti solo quando il sistema è inattiva e viene preceduto dai thread di qualsiasi processo in esecuzione in una classe con priorità più alta. Un esempio è uno screen saver. La classe di priorità inattiva viene ereditata dai processi figlio. |
|
Processo senza particolari esigenze di pianificazione. |
|
Processo con la massima priorità possibile. I thread di un processo di classe di priorità in tempo reale annullano i thread di tutti gli altri processi, inclusi i processi del sistema operativo che eseguono attività importanti. Ad esempio, un processo in tempo reale che viene eseguito per più di un intervallo molto breve può causare la mancata scaricamento della cache del disco o la mancata risposta del mouse. |
Commenti
Ogni thread ha un livello di priorità di base determinato dal valore di priorità del thread e dalla classe di priorità del processo. Il sistema operativo usa il livello di priorità di base di tutti i thread eseguibili per determinare quale thread ottiene la sezione successiva del tempo cpu. I thread vengono pianificati in modo round robin a ogni livello di priorità e solo quando non sono presenti thread eseguibili a un livello superiore verrà eseguita la pianificazione dei thread a un livello inferiore.
Per una tabella che mostra i livelli di priorità di base per ogni combinazione di classe di priorità e valore di priorità del thread, vedere Pianificazione priorità.
La classe Priority viene gestita dall'esecutivo, pertanto tutti i processi hanno una classe di priorità su cui è possibile eseguire query.
Esempio
Per un esempio, vedere Acquisizione di uno snapshot e visualizzazione di processi.
Requisiti
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | processthreadsapi.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |