Compartilhar via


Função PsQueryProcessAvailableCpus (wdm.h)

A função PsQueryProcessAvailableCpus consulta o conjunto de CPUs que estão disponíveis para um determinado processo ser executado.

Sintaxe

NTSTATUS PsQueryProcessAvailableCpus(
  [in]           PEPROCESS     Process,
  [in, out]      PKAFFINITY_EX Affinity,
  [in, optional] PULONG64      ObservedSequenceNumber,
  [out]          PULONG64      SequenceNumber
);

Parâmetros

[in] Process

Ponteiro para um processo (PEPROCESS).

[in, out] Affinity

Ponteiro para um objeto de afinidade estendida (PKAFFINITY_EX) que receberá o conjunto de CPUs disponíveis para o processo.

[in, optional] ObservedSequenceNumber

Opcionalmente, fornece um ponteiro para o número de sequência mais recente observado pelo chamador por meio de uma chamada anterior para essa rotina. Se esse número de sequência corresponder ao número de sequência atual, a rotina retornará STATUS_NO_WORK_DONE e não gravará no buffer de afinidade.

[out] SequenceNumber

Ponteiro para um buffer que receberá o número de sequência atual das CPUs disponíveis para o processo fornecido.

Valor de retorno

PsQueryProcessAvailableCpus retorna um dos seguintes valores NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS A consulta foi concluída com êxito.
STATUS_INVALID_PARAMETER Qualquer um dos buffers necessários é NULL.
STATUS_NO_WORK_DONE O número de sequência especificado corresponde ao número da sequência atual e nenhuma consulta foi executada.
STATUS_BUFFER_TOO_SMALL O buffer de afinidade fornecido é muito pequeno.

Observações

Essa rotina pode ser chamada no IRQL de PASSIVE_LEVEL para DISPATCH_LEVEL.

O buffer de afinidade deve ser grande o suficiente para acomodar a contagem de grupos de processadores ativos. Use KeQueryActiveGroupCount para determinar o tamanho necessário.

O número de sequência permite que os chamadores otimizem consultas repetidas verificando se a disponibilidade da CPU foi alterada desde a última chamada.

Requisitos

Requisito Valor
cabeçalho wdm.h
IRQL PASSIVE_LEVEL to DISPATCH_LEVEL

Consulte também

PsQueryProcessAvailableCpusCount

PsQuerySystemAvailableCpus

KeQueryActiveGroupCount