Compartir a través de


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.
Si no se cumple alguna de estas condiciones, la llamada a KeRevertToUserAffinityThreadEx no tiene ningún efecto.

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)

Consulte también

KAFFINITY

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx