Compartir a través de


Función KeGetProcessorNumberFromIndex (ntifs.h)

La rutina KeGetProcessorNumberFromIn dex convierte un índice de procesador de todo el sistema en un número de grupo y un número de procesador relativo al grupo.

Sintaxis

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

Parámetros

[in] ProcIndex

Índice de procesador de todo el sistema. Si un sistema multiprocesador contiene un total de n procesadores lógicos, los índices de procesador válidos oscilan entre 0 y n-1.

[out] ProcNumber

Puntero a una estructura de PROCESSOR_NUMBER asignada por el autor de la llamada en la que la rutina escribe el número de grupo y el número de procesador relativo al grupo del procesador identificado por ProcIndex.

Valor devuelto

keGetProcessorNumberFromIndex devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los valores devueltos de error posibles se incluyen los siguientes:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
El valor del parámetro ProcIndex no es un índice de procesador válido.

Observaciones

Esta rutina acepta como entrada un índice de procesador que identifica el procesador en todo el sistema multiprocesador. El valor de salida es una estructura PROCESSOR_NUMBER que identifica un procesador por su número de grupo y su número de procesador dentro del grupo.

Por ejemplo, si un sistema de varios procesadores contiene dos grupos y cada grupo contiene 64 procesadores lógicos, los números de procesador de cada grupo van de 0 a 63, pero los índices de procesador de todo el sistema van de 0 a 127.

Para obtener el número total de procesadores lógicos activos en el sistema, llame a la rutina KeQueryActiveProcessorCountEx.

La rutina KeGetProcessorIndexFromNumber convierte un número de grupo y un número de procesador relativo al grupo en un índice de procesador de todo el sistema.

Ejemplos

En el ejemplo de código siguiente se usa el KeQueryActiveProcessorCountEx y KeGetProcessorNumberFromIndex rutinas para enumerar todos los procesadores lógicos activos del 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.
    ...
}

El valor constante ALL_PROCESSOR_GROUPS se define en Winnt.h y Ntdef.h.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 7
de la plataforma de destino de Universal
encabezado de ntifs.h (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL Cualquier nivel

Consulte también

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER