SetThreadAffinityMask, fonction (winbase.h)

Définit un masque d’affinité processeur pour le thread spécifié.

Syntaxe

DWORD_PTR SetThreadAffinityMask(
  [in] HANDLE    hThread,
  [in] DWORD_PTR dwThreadAffinityMask
);

Paramètres

[in] hThread

Handle pour le thread dont le masque d’affinité doit être défini.

Ce handle doit avoir le droit d’accès THREAD_SET_INFORMATION ou THREAD_SET_LIMITED_INFORMATION et le droit d’accès THREAD_QUERY_INFORMATION ou THREAD_QUERY_LIMITED_INFORMATION . Pour plus d’informations, consultez Sécurité des threads et droits d’accès.

Windows Server 2003 et Windows XP : Le handle doit disposer des droits d’accès THREAD_SET_INFORMATION et THREAD_QUERY_INFORMATION .

[in] dwThreadAffinityMask

Masque d’affinité pour le thread.

Sur un système avec plus de 64 processeurs, le masque d’affinité doit spécifier les processeurs dans le groupe de processeurs actuel du thread.

Valeur retournée

Si la fonction réussit, la valeur de retour est le masque d’affinité précédent du thread.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Si le masque d’affinité de thread demande un processeur qui n’est pas sélectionné pour le masque d’affinité de processus, le dernier code d’erreur est ERROR_INVALID_PARAMETER.

Remarques

Un masque d’affinité de thread est un vecteur de bits dans lequel chaque bit représente un processeur logique sur lequel un thread est autorisé à s’exécuter. Un masque d’affinité de thread doit être un sous-ensemble du masque d’affinité de processus pour le processus conteneur d’un thread. Un thread ne peut s’exécuter que sur les processeurs sur 10000. Par conséquent, le masque d’affinité de thread ne peut pas spécifier un 1 bit pour un processeur lorsque le masque d’affinité de processus spécifie un 0 bit pour ce processeur.

La définition d’un masque d’affinité pour un processus ou un thread peut entraîner la réception de threads moins de temps processeur, car le système n’est pas autorisé à exécuter les threads sur certains processeurs. Dans la plupart des cas, il est préférable de laisser le système sélectionner un processeur disponible.

Si le nouveau masque d’affinité de thread ne spécifie pas le processeur qui exécute actuellement le thread, le thread est replanifié sur l’un des processeurs autorisés.

À compter de Windows 11 et Windows Server 2022, sur un système avec plus de 64 processeurs, les affinités de processus et de thread couvrent tous les processeurs du système, sur tous les groupes de processeurs, par défaut. DwThreadAffinityMask doit spécifier des processeurs dans le groupe principal actuel du thread.

Configuration requise

Condition requise Valeur
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 winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

GetProcessAffinityMask

Plusieurs processeurs

OpenThread

Fonctions de processus et de thread

Groupes de processeurs

SetProcessAffinityMask

SetThreadIdealProcessor

Threads