Función KeRevertToUserAffinityThreadEx (wdm.h)
La rutina KeRevertToUserAffinityThreadEx restaura la afinidad anterior del subproceso actual.
Sintaxis
void KeRevertToUserAffinityThreadEx(
[in] KAFFINITY Affinity
);
Parámetros
[in] Affinity
Variable con tipo KAFFINITY que especifica la nueva afinidad del sistema del subproceso actual. Establezca este parámetro en el valor devuelto por una llamada anterior a la rutina KeSetSystemAffinityThreadEx .
Valor devuelto
None
Observaciones
KeRevertToUserAffinityThreadEx cambia la afinidad del subproceso actual. El valor de afinidad es una máscara que identifica un conjunto de procesadores en los que se puede ejecutar el subproceso. Si se ejecuta correctamente, la rutina programa el subproceso para que se ejecute en un procesador de este conjunto.
Si el valor Affinity es distinto de cero, KeRevertToUserAffinityThreadEx establece la máscara de afinidad del subproceso en el valor Affinity . Si el valor affinity es cero, KeRevertToUserAffinityThreadEx restaura la máscara de afinidad de usuario original del subproceso. Esta máscara de afinidad de usuario original se guardó en el objeto de subproceso mediante una llamada anterior a KeSetSystemAffinityThreadEx. Una llamada a KeRevertToUserAffinityThreadEx no tiene ningún efecto a menos que esté precedida de una llamada a KeSetSystemAffinityThreadEx.
Si el valor affinity es distinto de cero, la rutina cambia la máscara de afinidad del subproceso actual al valor Affinity solo si se cumplen ambos de los siguientes valores:
- El valor affinity es válido (es decir, solo se establecen bits de máscara que corresponden a procesadores lógicos).
- Al menos uno de los procesadores especificados en el valor affinity está activo.
Windows 7 y versiones posteriores de los grupos de procesadores de soporte técnico de Windows. Los controladores diseñados para controlar la información sobre los grupos de procesadores deben usar la rutina KeRevertToUserGroupAffinityThread , que especifica un grupo de procesadores, en lugar de KeRevertToUserAffinityThreadEx, que no. Sin embargo, la implementación de KeRevertToUserAffinityThreadEx en Windows 7 y versiones posteriores de Windows proporciona compatibilidad con los controladores escritos para versiones anteriores de Windows, que no admiten grupos de procesadores. En esta implementación, un valor de afinidad distinto de cero es una máscara de afinidad que especifica un conjunto de procesadores lógicos en el grupo 0 en el que se puede ejecutar el subproceso. Si Affinity es cero, el subproceso revierte al número de grupo del modo de usuario original y a la máscara de afinidad.
Si se llama a KeRevertToUserAffinityThreadEx en IRQL <= APC_LEVEL y la llamada se realiza correctamente, la nueva máscara de afinidad (revertida) surte efecto inmediatamente. Cuando se devuelve la llamada, el subproceso que realiza la llamada ya se está ejecutando en un procesador especificado en la nueva máscara de afinidad. Si se llama a KeRevertToUserAffinityThreadEx en IRQL = DISPATCH_LEVEL y la llamada se realiza correctamente, el cambio de procesador pendiente se aplaza hasta que el autor de la llamada reduce el IRQL por debajo de DISPATCH_LEVEL.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de Windows. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (consulte la sección Comentarios). |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |