Compartir a través de


Función KeGetProcessorNumberFromIndex (wdm.h)

La rutina KeGetProcessorNumberFromIndex 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 posibles valores devueltos de error 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.

Comentarios

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 multiprocesador 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 usan las rutinas KeQueryActiveProcessorCountEx y KeGetProcessorNumberFromIndex 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 Value
Cliente mínimo compatible Disponible en Windows 7 y versiones posteriores de Windows.
Plataforma de destino Universal
Encabezado wdm.h (incluya Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel

Consulte también

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER