Fonction NtSetInformationThread (ntifs.h)
La routine NtSetInformationThread définit la priorité d’un thread.
Syntaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationThread(
[in] HANDLE ThreadHandle,
[in] THREADINFOCLASS ThreadInformationClass,
[in] PVOID ThreadInformation,
[in] ULONG ThreadInformationLength
);
Paramètres
[in] ThreadHandle
Handle vers 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, ThreadPagePriorityou 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 la classe de priorité d’origine du 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, voir ntddk.h. La valeur de 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, voir ntddk.h. La valeur de membre PagePriority doit être l’une de ces valeurs.
Valeur | Signification |
---|---|
MEMORY_PRIORITY_VERY_LOW (1) | Priorité de mémoire très faible. |
MEMORY_PRIORITY_LOW (2) | Priorité de mémoire faible. |
MEMORY_PRIORITY_MEDIUM (3) | Priorité de mémoire moyenne. |
MEMORY_PRIORITY_BELOW_NORMAL (4) | En dessous de la priorité de mémoire normale. |
MEMORY_PRIORITY_NORMAL (5) | 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 de retour
NtSetInformationThread 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
NtSetInformationThread peut être appelée par des pilotes de niveau supérieur pour définir la priorité d’un thread pour lequel ils ont un handle.
L’appelant doit avoir THREAD_SET_INFORMATION droits d’accès pour le thread donné afin d’appeler cette routine.
En règle générale, les pilotes de périphérique et intermédiaire qui configurent des threads créés par le pilote appellent KeSetBasePriorityThread ou KeSetPriorityThread à partir de leurs threads créés par le pilote, au lieu d’appeler NtSetInformationThread. Toutefois, un pilote peut appeler NtSetInformationThread pour élever la priorité d’un thread créé par le pilote avant l’exécution de ce thread.
Les pilotes en mode noyau peuvent appeler la fonction NtSetInformationThread 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éder à des fichiers et des données qui ne sont pas attendus à nouveau prochainement. Par exemple, une application anti-programme malveillant peut réduire la priorité des threads impliqués dans l’analyse des fichiers.
Note
Si l’appel à cette fonction se produit en mode noyau, vous devez utiliser le nom ZwSetInformationThread au lieu de NtSetInformationThread .
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 de 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 Using Nt and Zw Versions of the Native System Services Routines..
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 |
plateforme cible | Universel |
d’en-tête | ntifs.h (include Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
règles de conformité DDI | HwStorPortProhibitedDDIs, PowerIrpDDis |
Voir aussi
à l’aide de versions Nt et Zw des routines natives des services système.