Partager via


Fonction ZwSetInformationThread (ntddk.h)

La routine ZwSetInformationThread définit la priorité d’un thread.

Syntaxe

NTSYSAPI NTSTATUS ZwSetInformationThread(
  [in] HANDLE          ThreadHandle,
  [in] THREADINFOCLASS ThreadInformationClass,
  [in] PVOID           ThreadInformation,
  [in] ULONG           ThreadInformationLength
);

Paramètres

[in] ThreadHandle

Gérez l’objet thread. Pour créer un thread et obtenir un handle, appelez PsCreateSystemThread. Pour spécifier le thread actuel, utilisez la macro ZwCurrentThread .

[in] ThreadInformationClass

Une des valeurs définies par le système dans l’énumération THREADINFOCLASS (voir ntddk.h), ThreadPriority, ThreadBasePriority, ThreadPagePriority ou ThreadPowerThrottlingState.

[in] ThreadInformation

Pointeur vers une variable qui spécifie les informations à définir.

Si ThreadInformationClass est ThreadPriority, cette valeur doit être > LOW_PRIORITY et <= HIGH_PRIORITY.

Si ThreadInformationClass est ThreadBasePriority, cette valeur doit se trouver dans la plage de priorité de base valide du système et dans la classe de priorité d’origine pour le thread donné. Autrement dit, si la classe de priorité d’un thread est variable, la priorité de base de ce thread ne peut pas être réinitialisée à une valeur de priorité en temps réel, et inversement.

Si ThreadInformationClass est ThreadPagePriority, cette valeur est un pointeur vers une structure PAGE_PRIORITY_INFORMATION , consultez ntddk.h. La valeur du membre PagePriority doit être l’une de ces valeurs.

Si ThreadInformationClass est ThreadPowerThrottlingState, cette valeur est un pointeur vers une structure POWER_THROTTLING_THREAD_STATE , consultez ntddk.h. La valeur du membre PagePriority doit être l’une de ces valeurs.

Valeur Signification
MEMORY_PRIORITY_VERY_LOW Priorité de mémoire très faible.
MEMORY_PRIORITY_LOW Faible priorité de mémoire.
MEMORY_PRIORITY_MEDIUM Priorité de mémoire moyenne.
MEMORY_PRIORITY_BELOW_NORMAL En dessous de la priorité de mémoire normale.
MEMORY_PRIORITY_NORMAL Priorité de mémoire normale. Il s’agit de la priorité par défaut pour tous les threads et processus sur le système.

[in] ThreadInformationLength

Taille, en octets, de ThreadInformation.

Valeur retournée

ZwSetInformationThread retourne STATUS_SUCCESS en cas de réussite ou le code d’erreur NTSTATUS approprié en cas d’échec. Les codes d’erreur possibles incluent STATUS_INFO_LENGTH_MISMATCH ou STATUS_INVALID_PARAMETER.

Remarques

ZwSetInformationThread peut être appelé par des pilotes de niveau supérieur pour définir la priorité d’un thread pour lequel ils disposent d’un handle.

L’appelant doit disposer de droits d’accès THREAD_SET_INFORMATION pour le thread donné afin d’appeler cette routine.

En règle générale, les pilotes d’appareil et intermédiaires qui configurent les threads créés par le pilote appellent KeSetBasePriorityThread ou KeSetPriorityThread à partir de leurs threads créés par le pilote, plutôt que d’appeler ZwSetInformationThread. Toutefois, un pilote peut appeler ZwSetInformationThread pour augmenter la priorité d’un thread créé par un pilote avant l’exécution de ce thread.

Les pilotes en mode noyau peuvent appeler la fonction ZwSetInformationThread avec ThreadPagePriority pour spécifier la priorité de page d’un thread.

Pour améliorer les performances du système, les pilotes doivent utiliser la fonction avec ThreadPagePriority pour réduire la priorité de page des threads qui effectuent des opérations en arrière-plan ou accèdent aux fichiers et aux données qui ne devraient pas être consultés prochainement. Par exemple, une application anti-programme malveillant peut réduire la priorité des threads impliqués dans l’analyse des fichiers.

Pour déterminer la priorité de page pour un thread, appelez ZwQueryInformationThread.

Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom NtSetInformationThread au lieu de ZwSetInformationThread.

Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntddk.h (inclure Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm)

Voir aussi

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

Utilisation des versions Nt et Zw des routines natives des services système natifs