Freigeben über


NdisGetCurrentProcessorCounts-Funktion (ndis.h)

Die NdisGetCurrentProcessorCounts-Funktion gibt die Anzahl des aktuellen Prozessors zurück, mit dem ein Treiber die CPU-Auslastung für ein bestimmtes Zeitintervall ermitteln kann.

Syntax

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

Parameter

[out] pIdleCount

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion die kumulative Leerlaufzeit für den Prozessor seit dem Start des Systems zurückgibt.

[out] pKernelAndUser

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion die kumulative Verarbeitungszeit (Kernelmoduszeit plus Benutzermoduszeit) für den Prozessor seit dem Start des Systems zurückgibt.

[out] pIndex

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion einen nullbasierten Index zurückgibt, der den Prozessor innerhalb des Computers identifiziert.

Rückgabewert

Keine

Bemerkungen

NdisGetCurrentProcessorCounts gibt Leerlauf- und CPU-Auslastungszählungen zurück, die der Aufrufer verwenden kann, um die CPU-Auslastung für den aktuellen Prozessor zu bestimmen. Der CPU-Auslastungswert gibt an, wie geladen die CPU seit dem unmittelbar vorangehenden Aufruf dieser Funktion war. Wenn die CPU stark geladen wurde, kann ein solcher Treiber die Verarbeitung bestimmter Vorgänge ändern, um die Treiberleistung zu verbessern.

Hinweis Das Schätzen der Prozessorauslastung ist schwierig, und Treiber tun dies in der Regel nicht. Beachten Sie, dass es auch bei einer genauen Schätzung der Prozessorauslastung andere Faktoren gibt, die Sie berücksichtigen müssen, z. B. was die CPU-Last verursacht und wie wichtig diese bestimmte Last sein kann.
 
Ein Treiber kann NdisGetCurrentProcessorCounts in regelmäßigen Abständen innerhalb einer Timerfunktion aufrufen. Der Treiber kann die folgende Berechnung verwenden, um die CPU-Auslastung für ein Vielfaches des Zeitgeberintervalls zu bestimmen:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

Dabei gilt:

  • CpuUsage ist die CPU-Auslastung als Prozentsatz der Gesamtintervallzeit.
  • Idle ist der IdleCount-Wert, der vom letzten Aufruf von NdisGetCurrentProcessorCounts zurückgegeben wird.
  • Idle[n] ist ein IdleCount-Wert , der von einem vorherigen Aufruf zurückgegeben wird und als n-ten Element in einem Array gespeichert ist.
  • KernelandUser ist der KernelAndUser-Wert, der vom letzten Aufruf von NdisGetCurrentProcessorCounts zurückgegeben wird.
  • KernelandUser[n] ist der KernelandUser-Wert, der von einem vorherigen Aufruf zurückgegeben wird und als n-ten Element in einem Array gespeichert ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und höher-Treiber in Windows Vista und höher. Unterstützt für NDIS 5.1-Treiber (siehe NdisGetCurrentProcessorCounts (NDIS 5.1)) in Windows XP und höher.
Zielplattform Universell
Header ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Miscellaneous_Function(ndis)