Função GetPriorityClass (processthreadsapi.h)

Recupera a classe de prioridade para o processo especificado. Esse valor, junto com o valor de prioridade de cada thread do processo, determina o nível de prioridade básica de cada thread.

Sintaxe

DWORD GetPriorityClass(
  [in] HANDLE hProcess
);

Parâmetros

[in] hProcess

Um identificador para o processo.

O identificador deve ter o acesso PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION direito. Para obter mais informações, consulte Direitos de Acesso e Segurança do Processo.

Windows Server 2003 e Windows XP: O identificador deve ter o acesso de PROCESS_QUERY_INFORMATION correto.

Valor retornado

Se a função for bem-sucedida, o valor retornado será a classe de prioridade do processo especificado.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

A classe de prioridade do processo é um dos valores a seguir.

Valor/código retornado Descrição
ABOVE_NORMAL_PRIORITY_CLASS
0x00008000
Processo que tem prioridade acima de NORMAL_PRIORITY_CLASS , mas abaixo HIGH_PRIORITY_CLASS.
BELOW_NORMAL_PRIORITY_CLASS
0x00004000
Processo que tem prioridade acima de IDLE_PRIORITY_CLASS , mas abaixo NORMAL_PRIORITY_CLASS.
HIGH_PRIORITY_CLASS
0x00000080
Processo que executa tarefas críticas de tempo que devem ser executadas imediatamente para que elas sejam executadas corretamente. Os threads de um processo de classe de alta prioridade preempõem os threads de processos de classe de prioridade normal ou ociosa. Um exemplo é a Lista de Tarefas, que deve responder rapidamente quando chamado pelo usuário, independentemente da carga no sistema operacional. Use cuidados extremos ao usar a classe de alta prioridade, pois um aplicativo associado à CPU de classe de alta prioridade pode usar quase todos os ciclos disponíveis.
IDLE_PRIORITY_CLASS
0x00000040
Processo cujos threads são executados somente quando o sistema está ocioso e são precedidos pelos threads de qualquer processo em execução em uma classe de prioridade mais alta. Um exemplo é uma proteção de tela. A classe de prioridade ociosa é herdada por processos filho.
NORMAL_PRIORITY_CLASS
0x00000020
Processo sem nenhuma necessidade de agendamento especial.
REALTIME_PRIORITY_CLASS
0x00000100
Processo que tem a prioridade mais alta possível. Os threads de um processo de classe de prioridade em tempo real preempõem os threads de todos os outros processos, incluindo processos do sistema operacional que executam tarefas importantes. Por exemplo, um processo em tempo real que é executado por mais de um intervalo muito breve pode fazer com que os caches de disco não liberem ou fazem com que o mouse não responda.

Comentários

Cada thread tem um nível de prioridade base determinado pelo valor de prioridade do thread e pela classe de prioridade de seu processo. O sistema operacional usa o nível de prioridade base de todos os threads executáveis para determinar qual thread obtém a próxima fatia de tempo de CPU. Os threads são agendados de forma round robin em cada nível de prioridade e somente quando não há threads executáveis em um nível mais alto o agendamento de threads em um nível inferior ocorrerá.

Para obter uma tabela que mostra os níveis de prioridade base para cada combinação de valor de prioridade de classe e prioridade de thread, consulte Prioridades de agendamento.

A classe de prioridade é mantida pelo executivo, portanto, todos os processos têm uma classe de prioridade que pode ser consultada.

Exemplos

Para obter um exemplo, consulte Tomando um instantâneo e exibindo processos.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho processthreadsapi.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Getthreadpriority

Funções de thread e processo

Processos

Prioridades de agendamento

SetPriorityClass

SetThreadPriority