Freigeben über


NdisGetCurrentProcessorCounts-Funktion (ndis.h)

Die NdisGetCurrentProcessorCounts-Funktion gibt die Anzahl für den aktuellen Prozessor zurück, den ein Treiber verwenden kann, um die CPU-Auslastung für ein bestimmtes Zeitintervall zu bestimmen.

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 zurückgibt, seit das System gestartet wurde.

[out] pKernelAndUser

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion die kumulative Verarbeitungszeit (Kernelmoduszeit plus Benutzermoduszeit) für den Prozessor zurückgibt, seit das System gestartet wurde.

[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

Nichts

Bemerkungen

NdisGetCurrentProcessorCounts die Anzahl der Leerlauf- und CPU-Auslastungen 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 vorhergehenden 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 Die Schätzung der Prozessornutzung ist schwierig, und Treiber tun dies im Allgemeinen 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 Auslastung der CPU verursacht – und wie wichtig diese bestimmte Last sein kann.
 
Ein Treiber ruft möglicherweise NdisGetCurrentProcessorCounts regelmäßig innerhalb einer Zeitgeberfunktion auf. Der Treiber kann die folgende Berechnung verwenden, um die CPU-Auslastung für ein Vielfaches des Zeitgeberintervalls zu ermitteln:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

wo:

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt für NDIS 6.0 und höhere 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- Universal
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Miscellaneous_Function(ndis)