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 |
---|---|
|
Processo que tem prioridade acima de NORMAL_PRIORITY_CLASS , mas abaixo HIGH_PRIORITY_CLASS. |
|
Processo que tem prioridade acima de IDLE_PRIORITY_CLASS , mas abaixo NORMAL_PRIORITY_CLASS. |
|
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. |
|
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. |
|
Processo sem nenhuma necessidade de agendamento especial. |
|
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 |