Поделиться через


Функция NdisGetCurrentProcessorCounts (ndis.h)

Функция NdisGetCurrentProcessorCounts возвращает счетчики для текущего процессора, которые драйвер может использовать для определения использования ЦП за определенный интервал времени.

Синтаксис

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

Параметры

[out] pIdleCount

Указатель на переменную, предоставляемую вызывающей стороны, в которой эта функция возвращает совокупное время простоя процессора с момента загрузки системы.

[out] pKernelAndUser

Указатель на переменную вызывающего объекта, в которой эта функция возвращает совокупное время обработки (время в режиме ядра плюс время пользовательского режима) для процессора с момента загрузки системы.

[out] pIndex

Указатель на переменную, предоставляемую вызывающей стороны, в которой эта функция возвращает отсчитываемый от нуля индекс, идентифицирующий процессор на компьютере.

Возвращаемое значение

None

Remarks

NdisGetCurrentProcessorCounts возвращает количество бездействующих и потребления ЦП, которые вызывающий объект может использовать для определения использования ЦП для текущего процессора. Значение использования ЦП указывает, насколько загружен ЦП с момента непосредственного вызова этой функции. Если ЦП был сильно загружен, такой драйвер может изменить способ обработки определенных операций, чтобы повысить производительность драйвера.

Примечание Оценка использования процессора является сложной задачей, и драйверы обычно этого не делают. Обратите внимание, что даже при точной оценке использования процессора необходимо учитывать и другие факторы, например, что вызывает нагрузку на ЦП и насколько важна эта конкретная нагрузка.
 
Драйвер может периодически вызывать NdisGetCurrentProcessorCounts в рамках функции таймера. Драйвер может использовать следующее вычисление, чтобы определить загрузку ЦП для кратного интервала таймера:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

где:

  • CpuUsage — это загрузка ЦП в процентах от общего времени интервала.
  • Idle — это значение IdleCount, возвращаемое последним вызовом NdisGetCurrentProcessorCounts.
  • Idle[n] — это значение IdleCount , возвращаемое предыдущим вызовом, которое хранится в виде n-го элемента в массиве.
  • KernelandUser — это значение KernelAndUser, возвращаемое последним вызовом NdisGetCurrentProcessorCounts.
  • KernelandUser[n] — это значение KernelandUser, возвращаемое предыдущим вызовом, которое хранится в виде n-го элемента в массиве.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и более поздних версий в Windows Vista и более поздних версий. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisGetCurrentProcessorCounts (NDIS 5.1)) в Windows XP и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_Miscellaneous_Function(ndis)