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 |
---|---|
|
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 |