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.
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) |