Compartilhar via


Função KeGetProcessorNumberFromIndex (ntifs.h)

A rotina KeGetProcessorNumberFromIndex converte um índice de processador em todo o sistema em um número de grupo e um número de processador relativo ao grupo.

Sintaxe

NTSTATUS KeGetProcessorNumberFromIndex(
  [in]  ULONG             ProcIndex,
  [out] PPROCESSOR_NUMBER ProcNumber
);

Parâmetros

[in] ProcIndex

Um índice de processador em todo o sistema. Se um sistema multiprocessador contiver um total de n processadores lógicos, os índices de processador válidos variam de 0 a n-1.

[out] ProcNumber

Um ponteiro para uma estrutura de PROCESSOR_NUMBER alocada pelo chamador na qual a rotina grava o número do grupo e o número do processador relativo ao grupo do processador identificado por ProcIndex.

Retornar valor

KeGetProcessorNumberFromIndex retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os possíveis valores retornados por erro incluem o seguinte:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
O valor do parâmetro ProcIndex não é um índice de processador válido.

Comentários

Essa rotina aceita como entrada um índice de processador que identifica o processador em todo o sistema multiprocessador. O valor de saída é uma estrutura PROCESSOR_NUMBER que identifica um processador por seu número de grupo e seu número de processador dentro do grupo.

Por exemplo, se um sistema multiprocessador contiver dois grupos e cada grupo contiver 64 processadores lógicos, os números de processador em cada grupo variam de 0 a 63, mas os índices de processador em todo o sistema variam de 0 a 127.

Para obter o número total de processadores lógicos ativos no sistema, chame a rotina KeQueryActiveProcessorCountEx .

A rotina KeGetProcessorIndexFromNumber converte um número de grupo e um número de processador relativo ao grupo em um índice de processador em todo o sistema.

Exemplos

O exemplo de código a seguir usa as rotinas KeQueryActiveProcessorCountEx e KeGetProcessorNumberFromIndex para enumerar todos os processadores lógicos ativos no sistema:

ULONG Count;
ULONG ProcIndex;
PROCESSOR_NUMBER ProcNumber;

Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
for (ProcIndex = 0; ProcIndex < Count; ProcIndex += 1)
{
    KeGetProcessorNumberFromIndex(ProcIndex, &ProcNumber);

    // Do something with the contents of ProcNumber.
    ...
}

O valor constante ALL_PROCESSOR_GROUPS é definido em Winnt.h e Ntdef.h.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7
Plataforma de Destino Universal
Cabeçalho ntifs.h (incluem Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível

Confira também

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER