Condividi tramite


Funzione GetProcessAffinityMask (winbase.h)

Recupera la maschera di affinità del processo per il processo specificato e la maschera di affinità di sistema per il sistema.

Sintassi

BOOL GetProcessAffinityMask(
  [in]  HANDLE     hProcess,
  [out] PDWORD_PTR lpProcessAffinityMask,
  [out] PDWORD_PTR lpSystemAffinityMask
);

Parametri

[in] hProcess

Handle per il processo la cui maschera di affinità è desiderata.

Questo handle deve avere il PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION diritto di accesso. Per altre informazioni, vedere Elaborare diritti di sicurezza e accesso.

Windows Server 2003 e Windows XP: L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION .

[out] lpProcessAffinityMask

Puntatore a una variabile che riceve la maschera di affinità per il processo specificato.

[out] lpSystemAffinityMask

Puntatore a una variabile che riceve la maschera di affinità per il sistema.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero e la funzione imposta le variabili puntate da lpProcessAffinityMask e lpSystemAffinityMask alle maschere di affinità appropriate.

In un sistema con più di 64 processori, se i thread del processo chiamante si trovano in un singolo gruppo di processori, la funzione imposta le variabili puntate da lpProcessAffinityMask e lpSystemAffinityMask alla maschera di affinità del processo e alla maschera del processore di processori logici attivi per tale gruppo. Se il processo di chiamata contiene thread in più gruppi, la funzione restituisce zero per entrambe le maschere di affinità.

Se la funzione ha esito negativo, il valore restituito è zero e i valori delle variabili puntate da lpProcessAffinityMask e lpSystemAffinityMask non sono definiti. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Una maschera di affinità di processo è un vettore di bit in cui ogni bit rappresenta i processori che un processo può essere eseguito. Una maschera di affinità di sistema è un vettore di bit in cui ogni bit rappresenta i processori configurati in un sistema.

Una maschera di affinità di processo è un subset della maschera di affinità di sistema. Un processo è consentito solo per l'esecuzione nei processori configurati in un sistema. Pertanto, la maschera di affinità di processo non può specificare un bit per un processore quando la maschera di affinità di sistema specifica un bit 0 per tale processore.

A partire da Windows 11 e Windows Server 2022, in un sistema con più di 64 processori, processi e affinità di thread si estendono su tutti i processori nel sistema, in tutti i gruppi di processori, per impostazione predefinita. La funzione GetProcessAffinityMask imposta lpProcessAffinityMask e lpSystemAffinityMask sul processo e le maschere del processore di sistema nel gruppo primario del processo. Se il processo aveva impostato in modo esplicito l'affinità di uno o più thread all'esterno del gruppo primario del processo, la funzione restituisce zero per entrambe le maschere di affinità. Se, tuttavia, hHandle specifica un handle per il processo corrente, la funzione usa sempre il gruppo primario del thread chiamante (che per impostazione predefinita è lo stesso del gruppo primario del processo) per impostare lpProcessAffinityMask e lpSystemAffinityMask.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Processori multipli

Funzioni di processi e thread

Processi

Gruppi di processori

SetProcessAffinityMask

SetThreadAffinityMask