Condividi tramite


Funzione NdisGetCurrentProcessorCounts (ndis.h)

La funzione NdisGetCurrentProcessorCounts restituisce i conteggi per il processore corrente che un driver può usare per determinare l'utilizzo della CPU per un intervallo di tempo specifico.

Sintassi

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

Parametri

[out] pIdleCount

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce il tempo di inattività cumulativo per il processore dall'avvio del sistema.

[out] pKernelAndUser

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce il tempo di elaborazione cumulativo (tempo in modalità kernel più tempo della modalità utente) per il processore dall'avvio del sistema.

[out] pIndex

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce un indice in base zero che identifica il processore all'interno del computer.

Valore restituito

nessuno

Osservazioni

NdisGetCurrentProcessorCounts restituisce i conteggi di inattività e utilizzo della CPU che il chiamante può usare per determinare l'utilizzo della CPU per il processore corrente. Il valore di utilizzo della CPU indica come è stata caricata la CPU dopo la chiamata immediatamente precedente a questa funzione. Se la CPU è stata caricata pesantemente, tale driver può modificare il modo in cui gestisce determinate operazioni per migliorare le prestazioni del driver.

Nota La stima dell'utilizzo del processore è difficile e i driver in genere non lo fanno. Si noti che, anche se si dispone di una stima accurata dell'utilizzo del processore, ci sono altri fattori da tenere in considerazione, ad esempio ciò che causa il carico sulla CPU e l'importanza di tale carico specifico.
 
Un driver può chiamare periodicamente NdisGetCurrentProcessorCounts all'interno di una funzione timer. Il driver può usare il calcolo seguente per determinare l'utilizzo della CPU per un multiplo dell'intervallo timer:
CpuUsage = 100-100*(Idle - Idle[n])/(KernelAndUser - KernelAndUser[n]);

dove:

  • CpuUsage è l'utilizzo della CPU come percentuale del tempo di intervallo totale
  • Idle è il valore IdleCount restituito dalla chiamata più recente a NdisGetCurrentProcessorCounts
  • Idle[n] è un valore IdleCount restituito da una chiamata precedente, archiviato come elemento n in una matrice
  • KernelandUser è il valore KernelAndUser restituito dalla chiamata più recente a NdisGetCurrentProcessorCounts
  • KernelandUser[n] è il valore KernelandUser restituito da una chiamata precedente, archiviato come elemento n in una matrice

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e versioni successive in Windows Vista e versioni successive. Supportato per i driver NDIS 5.1 (vedere NdisGetCurrentProcessorCounts (NDIS 5.1)) in Windows XP e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Miscellaneous_Function(ndis)