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
ABOVE_NORMAL_PRIORITY_CLASS
0x00008000
Processo con priorità superiore a NORMAL_PRIORITY_CLASS ma inferiore HIGH_PRIORITY_CLASS.
BELOW_NORMAL_PRIORITY_CLASS
0x00004000
Processo con priorità superiore a IDLE_PRIORITY_CLASS ma inferiore NORMAL_PRIORITY_CLASS.
HIGH_PRIORITY_CLASS
0x00000080
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.
IDLE_PRIORITY_CLASS
0x00000040
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.
NORMAL_PRIORITY_CLASS
0x00000020
Processo senza particolari esigenze di pianificazione.
REALTIME_PRIORITY_CLASS
0x00000100
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

Vedere anche

GetThreadPriority

Funzioni di processi e thread

Processi

Priorità di pianificazione

SetPriorityClass

SetThreadPriority