Compartir a través de


Función NdisGetCurrentProcessorCounts (ndis.h)

La función NdisGetCurrentProcessorCounts devuelve recuentos para el procesador actual que un controlador puede usar para determinar el uso de CPU para un intervalo de tiempo determinado.

Sintaxis

void NdisGetCurrentProcessorCounts(
  [out] PULONG pIdleCount,
  [out] PULONG pKernelAndUser,
  [out] PULONG pIndex
);

Parámetros

[out] pIdleCount

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve el tiempo de inactividad acumulado para el procesador desde el arranque del sistema.

[out] pKernelAndUser

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve el tiempo de procesamiento acumulado (tiempo del modo kernel más el tiempo del modo de usuario) para el procesador desde que se ha arrancado el sistema.

[out] pIndex

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve un índice de base cero que identifica el procesador dentro del equipo.

Valor devuelto

None

Observaciones

NdisGetCurrentProcessorCounts devuelve recuentos de uso de CPU y inactivos que el autor de la llamada puede usar para determinar el uso de CPU para el procesador actual. El valor de uso de CPU indica cómo se cargó la CPU desde la llamada inmediatamente anterior a esta función. Si la CPU se ha cargado en gran medida, un controlador de este tipo puede cambiar la forma en que controla ciertas operaciones para mejorar el rendimiento del controlador.

Nota Estimar el uso del procesador es difícil y los controladores generalmente no lo hacen. Tenga en cuenta que, incluso si tiene una estimación precisa del uso del procesador, hay otros factores que debe tener en cuenta, como lo que está causando la carga en la CPU, y lo importante que podría ser esa carga concreta.
 
Un controlador puede llamar a NdisGetCurrentProcessorCounts periódicamente dentro de una función del temporizador. El controlador puede usar el siguiente cálculo para determinar el uso de CPU para un múltiplo del intervalo del temporizador:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

donde:

  • CpuUsage es el uso de CPU como porcentaje del tiempo total del intervalo
  • Idle es el valor IdleCount devuelto por la llamada más reciente a NdisGetCurrentProcessorCounts.
  • Idle[n] es un valor IdleCount devuelto por una llamada anterior, almacenado como el nth elemento de una matriz.
  • KernelandUser es el valor KernelAndUser devuelto por la llamada más reciente a NdisGetCurrentProcessorCounts.
  • KernelandUser[n] es el valor KernelandUser devuelto por una llamada anterior, almacenado como el nth elemento de una matriz.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con controladores NDIS 6.0 y versiones posteriores en Windows Vista y versiones posteriores. Compatible con los controladores NDIS 5.1 (consulta NdisGetCurrentProcessorCounts (NDIS 5.1)) en Windows XP y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_Miscellaneous_Function(ndis)