GetProcessAffinityMask, fonction (winbase.h)
Récupère le masque d’affinité de processus pour le processus spécifié et le masque d’affinité système pour le système.
Syntaxe
BOOL GetProcessAffinityMask(
[in] HANDLE hProcess,
[out] PDWORD_PTR lpProcessAffinityMask,
[out] PDWORD_PTR lpSystemAffinityMask
);
Paramètres
[in] hProcess
Handle du processus dont le masque d’affinité est souhaité.
Ce handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION . Pour plus d’informations, consultez Traiter les droits de sécurité et d’accès.
Windows Server 2003 et Windows XP : Le handle doit disposer du droit d’accès PROCESS_QUERY_INFORMATION .
[out] lpProcessAffinityMask
Pointeur vers une variable qui reçoit le masque d’affinité pour le processus spécifié.
[out] lpSystemAffinityMask
Pointeur vers une variable qui reçoit le masque d’affinité pour le système.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro et la fonction définit les variables pointées par lpProcessAffinityMask et lpSystemAffinityMask sur les masques d’affinité appropriés.
Sur un système avec plus de 64 processeurs, si les threads du processus appelant se trouvent dans un groupe de processeurs unique, la fonction définit les variables pointées par lpProcessAffinityMask et lpSystemAffinityMask sur le masque d’affinité de processus et le masque de processeur des processeurs logiques actifs pour ce groupe. Si le processus appelant contient des threads dans plusieurs groupes, la fonction retourne zéro pour les deux masques d’affinité.
Si la fonction échoue, la valeur de retour est égale à zéro et les valeurs des variables pointées par lpProcessAffinityMask et lpSystemAffinityMask ne sont pas définies. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Un masque d’affinité de processus est un vecteur de bits dans lequel chaque bit représente les processeurs sur lesquels un processus est autorisé à s’exécuter. Un masque d’affinité système est un vecteur de bits dans lequel chaque bit représente les processeurs configurés dans un système.
Un masque d’affinité de processus est un sous-ensemble du masque d’affinité système. Un processus n’est autorisé à s’exécuter que sur les processeurs configurés dans un système. Par conséquent, le masque d’affinité de processus ne peut pas spécifier un 1 bit pour un processeur lorsque le masque d’affinité système spécifie un 0 bit pour ce processeur.
À compter de Windows 11 et De Windows Server 2022, sur un système avec plus de 64 processeurs, les affinités de processus et de thread s’étendent par défaut à tous les processeurs du système, dans tous les groupes de processeurs. La fonction GetProcessAffinityMask définit lpProcessAffinityMask et lpSystemAffinityMask sur les masques de processus et de processeur système sur le groupe principal du processus. Si le processus avait explicitement défini l’affinité d’un ou plusieurs de ses threads en dehors du groupe principal du processus, la fonction retourne zéro pour les deux masques d’affinité. Si, toutefois, hHandle spécifie un handle pour le processus en cours, la fonction utilise toujours le groupe principal du thread appelant (qui par défaut est le même que le groupe principal du processus) afin de définir le lpProcessAffinityMask et lpSystemAffinityMask.
Configuration requise
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 |