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 el arranque del 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

Ninguno

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, este controlador puede cambiar cómo controla ciertas operaciones para mejorar el rendimiento del controlador.

Nota Estimación del 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 de temporizador. El controlador puede usar el siguiente cálculo para determinar el uso de cpu para un intervalo de temporizador múltiple:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

Dónde:

  • 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 IdleCount valor devuelto por una llamada anterior, almacenado como el nº 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 nº elemento de una matriz.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con NDIS 6.0 y controladores 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.
de la plataforma de destino de Universal
encabezado de ndis.h (incluya Ndis.h)
biblioteca de Ndis.lib
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI Irql_Miscellaneous_Function(ndis)