GetPriorityClass, fonction (processthreadsapi.h)
Récupère la classe de priorité pour le processus spécifié. Cette valeur, ainsi que la valeur de priorité de chaque thread du processus, déterminent le niveau de priorité de base de chaque thread.
Syntaxe
DWORD GetPriorityClass(
[in] HANDLE hProcess
);
Paramètres
[in] hProcess
Handle du processus.
Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION . Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.
Windows Server 2003 et Windows XP : Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION .
Valeur retournée
Si la fonction réussit, la valeur de retour est la classe de priorité du processus spécifié.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
La classe de priorité du processus est l’une des valeurs suivantes.
Code/valeur de retour | Description |
---|---|
|
Processus prioritaire au-dessus de NORMAL_PRIORITY_CLASS mais inférieur à HIGH_PRIORITY_CLASS. |
|
Processus prioritaire au-dessus de IDLE_PRIORITY_CLASS mais inférieur à NORMAL_PRIORITY_CLASS. |
|
Processus qui effectue des tâches à durée critique qui doivent être exécutées immédiatement pour qu’il s’exécute correctement. Les threads d’un processus de classe de priorité élevée préemptent les threads des processus de classe de priorité normaux ou inactifs. Par exemple, la liste des tâches doit répondre rapidement lorsqu’elle est appelée par l’utilisateur, quelle que soit la charge sur le système d’exploitation. Faites très attention lors de l’utilisation de la classe de priorité élevée, car une application liée à l’UC de classe haute priorité peut utiliser presque tous les cycles disponibles. |
|
Processus dont les threads s’exécutent uniquement lorsque le système est inactif et sont préemptés par les threads de tout processus exécuté dans une classe de priorité plus élevée. Un écran de veille est un bon exemple. Les processus enfants héritent de la classe de priorité inactive. |
|
Traiter sans besoin de planification particulière. |
|
Processus ayant la priorité la plus élevée possible. Les threads d’un processus de classe de priorité en temps réel préemptent les threads de tous les autres processus, y compris les processus de système d’exploitation effectuant des tâches importantes. Par exemple, un processus en temps réel qui s’exécute pendant plus d’un intervalle très court peut empêcher le vidage des caches de disque ou empêcher la souris de répondre. |
Notes
Chaque thread a un niveau de priorité de base déterminé par la valeur de priorité du thread et la classe de priorité de son processus. Le système d’exploitation utilise le niveau de priorité de base de tous les threads exécutables pour déterminer quel thread obtient la tranche de temps processeur suivante. Les threads sont planifiés de façon par tourniquet (round robin) à chaque niveau de priorité, et ce n’est qu’en l’absence de threads exécutables à un niveau supérieur que la planification des threads à un niveau inférieur a lieu.
Pour obtenir un tableau montrant les niveaux de priorité de base pour chaque combinaison de classe de priorité et de valeur de priorité de thread, consultez Priorités de planification.
La classe De priorité étant gérée par l’exécutif, tous les processus ont une classe de priorité qui peut être interrogée.
Exemples
Pour obtenir un exemple, consultez Prise d’un instantané et Affichage des processus.
Spécifications
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | processthreadsapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |