Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La routine KeSetBasePriorityThread définit la priorité d’exécution, par rapport au processus actuel, pour un thread donné.
Syntaxe
LONG KeSetBasePriorityThread(
[in, out] PKTHREAD Thread,
[in] LONG Increment
);
Paramètres
[in, out] Thread
Pointeur vers un objet de répartiteur de type KTHREAD.
[in] Increment
Spécifie la valeur à ajouter à la priorité de base du processus pour le thread. Cette valeur peut être positive ou négative.
La plage effective dépend de la classe de priorité du processus :
- Pour les processus de classe de priorité variable : la priorité résultante doit rester comprise entre 1 et (
LOW_REALTIME_PRIORITY- 1) - Pour les processus de classe de priorité en temps réel : la priorité résultante doit rester à l’intérieur
LOW_REALTIME_PRIORITYHIGH_PRIORITY
Si la valeur absolue d’Incrément est supérieure ou égale à (HIGH_PRIORITY + 1) / 2, la saturation de priorité se produit, ce qui signifie que les modifications ultérieures apportées à la priorité de base du processus parent n’affectent pas la priorité de base de ce thread.
Valeur de retour
KeSetBasePriorityThread retourne l’incrément de priorité de base précédent du thread donné. L’incrément de priorité de base précédent est défini comme la différence entre l’ancienne priorité de base du thread spécifié et la priorité de base du processus du thread.
Valeurs de retour spéciales :
Cette fonction retourne 0 lorsqu’une tentative est effectuée pour modifier la priorité d’un thread inactif (threads dans le processus de noyau initial). La fonction n’autorise pas la modification des priorités des threads inactifs.
Pour les threads saturés, cette fonction retourne
((HIGH_PRIORITY + 1) / 2) * saturation_valueplutôt que la différence de priorité simple, où saturation_value est +1 ou -1 selon que le thread a été saturé à haute ou basse priorité.
Remarques
La nouvelle priorité de base est calculée en ajoutant le Incrémentdonné, qui peut être une valeur négative, à la priorité de base du processus du thread spécifié. La valeur résultante est stockée en tant que priorité de base du thread spécifié.
Les pilotes qui configurent des threads dédiés aux appareils avec des attributs de priorité variable peuvent appeler cette routine pour définir la priorité d’un thread par rapport au processus système dans lequel le thread est créé.
La nouvelle priorité de base est limitée à la classe de priorité du processus du thread donné. Par conséquent, la priorité de base n’est pas autorisée à passer d’une classe de priorité variable à une classe de priorité en temps réel ou inversement.
KeSetBasePriorityThread est une opération relativement coûteuse qui doit être utilisée avec parcimonie. Évitez les appels fréquents à cette fonction, car les modifications répétées de priorité (par exemple, une fois par minute) peuvent avoir un impact significatif sur les performances du système et empêcher le planificateur de fonctionner efficacement. Utilisez cette fonction uniquement lorsque des modifications de priorité persistante sont requises, et non pour les ajustements temporaires ou les mises à jour périodiques.
Exigences
| Exigence | Valeur |
|---|---|
| client minimum pris en charge | Windows 2000 |
| plateforme cible | Universel |
| d’en-tête | ntddk.h (include Ntddk.h) |
| bibliothèque | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | PASSIVE_LEVEL |