Compartir a través de


Función KeSetBasePriorityThread (ntddk.h)

La KeSetBasePriorityThread rutina establece la prioridad en tiempo de ejecución, en relación con el proceso actual, para un subproceso determinado.

Sintaxis

LONG KeSetBasePriorityThread(
  [in, out] PKTHREAD Thread,
  [in]      LONG     Increment
);

Parámetros

[in, out] Thread

Puntero a un objeto distribuidor de tipo KTHREAD.

[in] Increment

Especifica el valor que se va a agregar a la prioridad base del proceso del Thread. Este valor puede ser positivo o negativo.

El intervalo efectivo depende de la clase de prioridad del proceso:

  • Para los procesos de clase de prioridad variable: la prioridad resultante debe permanecer dentro de 1 a (LOW_REALTIME_PRIORITY - 1)
  • Para los procesos de clase de prioridad en tiempo real: la prioridad resultante debe permanecer dentro de LOW_REALTIME_PRIORITYHIGH_PRIORITY

Si el valor absoluto de Increment es mayor o igual que (HIGH_PRIORITY + 1) / 2, se produce una saturación de prioridad, lo que significa que los cambios posteriores en la prioridad base del proceso primario no afectarán a la prioridad base de este subproceso.

Valor devuelto

keSetBasePriorityThread devuelve el incremento de prioridad base anterior del subproceso dado. El incremento de prioridad base anterior se define como la diferencia entre la prioridad base anterior del subproceso especificado y la prioridad base del proceso del subproceso.

Valores devueltos especiales:

  • Esta función devuelve 0 cuando se intenta cambiar la prioridad de un subproceso inactivo (subprocesos en el proceso inicial del kernel). La función no permite cambiar las prioridades de subprocesos inactivos.

  • En el caso de los subprocesos saturados, esta función devuelve ((HIGH_PRIORITY + 1) / 2) * saturation_value en lugar de la diferencia de prioridad simple, donde saturation_value es +1 o -1 en función de si el subproceso estaba saturado en prioridad alta o baja.

Observaciones

La nueva prioridad base se calcula agregando el incremento especificado, que puede ser un valor negativo, a la prioridad base del proceso del subproceso especificado. El valor resultante se almacena como la prioridad base del subproceso especificado.

Los controladores que configuran subprocesos dedicados al dispositivo con atributos de prioridad variable pueden llamar a esta rutina para establecer la prioridad de un subproceso en relación con el proceso del sistema en el que se crea el subproceso.

La nueva prioridad base está restringida a la clase de prioridad del proceso del subproceso especificado. Por lo tanto, la prioridad base no puede pasar de una clase de prioridad variable a una clase de prioridad en tiempo real o viceversa.

KeSetBasePriorityThread es una operación relativamente costosa que se debe usar con moderación. Evite llamadas frecuentes a esta función, ya que los cambios de prioridad repetidos (por ejemplo, una vez por minuto) pueden afectar significativamente al rendimiento del sistema y evitar que el programador funcione de forma eficaz. Use esta función solo cuando se requieran cambios de prioridad persistentes, no para ajustes temporales o actualizaciones periódicas.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000
de la plataforma de destino de Universal
encabezado de ntddk.h (incluya Ntddk.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL

Consulte también

KeGetCurrentThread

KeQueryPriorityThread

KeSetPriorityThread