NdisGetCurrentProcessorCounts 函数 (ndis.h)

NdisGetCurrentProcessorCounts 函数返回当前处理器的计数,驱动程序可以使用这些计数来确定特定时间间隔的 CPU 使用率。

语法

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

参数

[out] pIdleCount

指向调用方提供的变量的指针,在此变量中,此函数返回自启动系统以来处理器的累积空闲时间。

[out] pKernelAndUser

指向调用方提供的变量的指针,在此变量中,此函数返回自系统启动以来处理器的累积处理时间 (内核模式时间加上用户模式时间) 。

[out] pIndex

指向调用方提供的变量的指针,在此变量中,此函数返回一个从零开始的索引,该索引标识计算机中的处理器。

返回值

备注

NdisGetCurrentProcessorCounts 返回空闲和 CPU 使用率计数,调用方可以使用这些计数来确定当前处理器的 CPU 使用率。 CPU 使用率值指示自上一次调用此函数以来 CPU 的负载情况。 如果 CPU 负载过重,此类驱动程序可以更改处理某些操作的方式,以提高驱动程序性能。

注意 估算处理器使用情况很困难,驱动程序通常不会这样做。 请注意,即使对处理器使用情况进行了准确的估计,还需要考虑其他因素,例如导致 CPU 负载的原因以及特定负载可能有多重要。
 
驱动程序可能会在计时器函数中定期调用 NdisGetCurrentProcessorCounts 。 驱动程序可以使用以下计算来确定计时器间隔的倍数的 CPU 使用率:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

其中:

  • CpuUsage 是 CPU 使用率,占总间隔时间的百分比
  • Idle 是最近调用 NdisGetCurrentProcessorCounts 返回的 IdleCount
  • Idle[n] 是由上一次调用返回的 IdleCount 值,作为数组中的第 n 个元素存储
  • KernelandUser 是最近调用 NdisGetCurrentProcessorCounts 返回的 KernelAndUser
  • KernelandUser[n] 是由上一次调用返回的 KernelandUser 值,作为数组中的第 n 个元素存储

要求

要求
最低受支持的客户端 支持 Windows Vista 及更高版本中的 NDIS 6.0 及更高版本的驱动程序。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 及更高版本中的 NdisGetCurrentProcessorCounts (NDIS 5.1) ) 。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_Miscellaneous_Function (ndis)