Función KeGetProcessorNumberFromIndex (ntifs.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 van de 0 a 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 |
---|---|
|
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 | Windows 7 |
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | Cualquier nivel |