Funzione KeRevertToUserAffinityThreadEx (wdm.h)

La routine KeRevertToUserAffinityThreadEx ripristina l'affinità precedente del thread corrente.

Sintassi

void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

Parametri

[in] Affinity

Variabile tipizzata KAFFINITY che specifica la nuova affinità di sistema del thread corrente. Impostare questo parametro sul valore restituito da una chiamata precedente alla routine KeSetSystemAffinityThreadEx .

Valore restituito

nessuno

Osservazioni

KeRevertToUserAffinityThreadEx modifica l'affinità del thread corrente. Il valore di affinità è una maschera che identifica un set di processori in cui è possibile eseguire il thread. In caso di esito positivo, la routine pianifica l'esecuzione del thread in un processore in questo set.

Se il valore affinity è diverso da zero, KeRevertToUserAffinityThreadEx imposta la maschera di affinità del thread sul valore affinity . Se il valore affinity è zero, KeRevertToUserAffinityThreadEx ripristina la maschera di affinità utente originale del thread. Questa maschera di affinità utente originale è stata salvata nell'oggetto thread da una chiamata precedente a KeSetSystemAffinityThreadEx. Una chiamata a KeRevertToUserAffinityThreadEx non ha alcun effetto a meno che non sia preceduta da una chiamata a KeSetSystemAffinityThreadEx.

Se il valore affinity è diverso da zero, la routine modifica la maschera di affinità del thread corrente sul valore affinity solo se entrambe le condizioni seguenti sono vere:

  • Il valore affinity è valido, ovvero vengono impostati solo i bit mask che corrispondono ai processori logici.
  • Almeno uno dei processori specificati nel valore Affinity è attivo.
Se una di queste condizioni non viene soddisfatta, la chiamata a KeRevertToUserAffinityThreadEx non ha alcun effetto.

Windows 7 e versioni successive di Windows supportano i gruppi di processori. I driver progettati per gestire le informazioni sui gruppi di processori devono usare la routine KeRevertToUserGroupAffinityThread , che specifica un gruppo di processori, anziché KeRevertToUserAffinityThreadEx, che non lo fa. Tuttavia, l'implementazione di KeRevertToUserAffinityThreadEx in Windows 7 e versioni successive di Windows offre la compatibilità per i driver scritti per le versioni precedenti di Windows, che non supportano i gruppi di processori. In questa implementazione, un valore affinity diverso da zero è una maschera di affinità che specifica un set di processori logici nel gruppo 0 in cui il thread può essere eseguito. Se Affinity è zero, il thread torna al numero di gruppo originale in modalità utente e alla maschera di affinità.

Se KeRevertToUserAffinityThreadEx viene chiamato in IRQL <= APC_LEVEL e la chiamata ha esito positivo, la nuova maschera di affinità (ripristinata) diventa effettiva immediatamente. Al termine della chiamata, il thread chiamante è già in esecuzione in un processore specificato nella nuova maschera di affinità. Se KeRevertToUserAffinityThreadEx viene chiamato in IRQL = DISPATCH_LEVEL e la chiamata ha esito positivo, la modifica del processore in sospeso viene posticipata fino a quando il chiamante non abbassa irQL sotto DISPATCH_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive di Windows.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (vedere la sezione Osservazioni).
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

KAFFINITY

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx