Partilhar via


Função KeSetBasePriorityThread (ntddk.h)

A rotina KeSetBasePriorityThread define a prioridade de tempo de execução, em relação ao processo atual, para um determinado thread.

Sintaxe

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

Parâmetros

[in, out] Thread

Ponteiro para um objeto dispatcher do tipo KTHREAD.

[in] Increment

Especifica o valor a ser adicionado à prioridade base do processo para o de Thread. Esse valor pode ser positivo ou negativo.

O intervalo efetivo depende da classe de prioridade do processo:

  • Para processos de classe de prioridade variável: a prioridade resultante deve permanecer dentro de 1 para (LOW_REALTIME_PRIORITY - 1)
  • Para processos de classe de prioridade em tempo real: a prioridade resultante deve permanecer dentro LOW_REALTIME_PRIORITY de HIGH_PRIORITY

Se o valor absoluto de Incremento for maior ou igual a (HIGH_PRIORITY + 1) / 2, a saturação de prioridade ocorrerá, o que significa que alterações subsequentes na prioridade base do processo pai não afetarão a prioridade base desse thread.

Valor de retorno

KeSetBasePriorityThread retorna o incremento de prioridade base anterior do thread especificado. O incremento de prioridade base anterior é definido como a diferença entre a prioridade base antiga do thread especificado e a prioridade base do processo do thread.

Valores de retorno especiais:

  • Essa função retorna 0 quando é feita uma tentativa de alterar a prioridade de um thread ocioso (threads no processo inicial do kernel). A função não permite que as prioridades de thread ocioso sejam alteradas.

  • Para threads saturados, essa função retorna ((HIGH_PRIORITY + 1) / 2) * saturation_value em vez da diferença de prioridade simples, em que saturation_value é +1 ou -1 dependendo se o thread foi saturado em alta ou baixa prioridade.

Observações

A nova prioridade base é computada adicionando o incremento fornecido, que pode ser um valor negativo, à prioridade base do processo do thread especificado. O valor resultante é armazenado como a prioridade base do thread especificado.

Os drivers que configuram threads dedicados ao dispositivo com atributos de prioridade variável podem chamar essa rotina para definir a prioridade desse thread em relação ao processo do sistema no qual o thread é criado.

A nova prioridade base é restrita à classe de prioridade do processo do thread especificado. Portanto, a prioridade base não tem permissão para atravessar de uma classe de prioridade variável para uma classe de prioridade em tempo real ou vice-versa.

KeSetBasePriorityThread é uma operação relativamente cara que deve ser usada com moderação. Evite chamadas frequentes para essa função, pois alterações de prioridade repetidas (como uma vez por minuto) podem afetar significativamente o desempenho do sistema e impedir que o agendador funcione com eficiência. Use essa função somente quando forem necessárias alterações de prioridade persistentes, não para ajustes temporários ou atualizações periódicas.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte também

KeGetCurrentThread

KeQueryPriorityThread

KeSetPriorityThread