vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: CPU-Auslastung 
Autor: Martin01
Datum: 26.06.03 20:25

'clsCPUUsageNT.cls

Option Explicit

Private Const SYSTEM_BASICINFORMATION As Long = 0&
Private Const SYSTEM_PERFORMANCEINFORMATION As Long = 2&
Private Const SYSTEM_TIMEINFORMATION As Long = 3&
Private Const NO_ERROR As Long = 0

Private Type LARGE_INTEGER
dwLow As Long
dwHigh As Long
End Type

Private Type SYSTEM_BASIC_INFORMATION
dwUnknown1 As Long
uKeMaximumIncrement As Long
uPageSize As Long
uMmNumberOfPhysicalPages As Long
uMmLowestPhysicalPage As Long
uMmHighestPhysicalPage As Long
uAllocationGranularity As Long
pLowestUserAddress As Long
pMmHighestUserAddress As Long
uKeActiveProcessors As Long
bKeNumberProcessors As Byte
bUnknown2 As Byte
wUnknown3 As Integer
End Type

Private Type SYSTEM_PERFORMANCE_INFORMATION
liIdleTime As LARGE_INTEGER
dwSpare(0 To 75) As Long
End Type

Private Type SYSTEM_TIME_INFORMATION
liKeBootTime As LARGE_INTEGER
liKeSystemTime As LARGE_INTEGER
liExpTimeZoneBias As LARGE_INTEGER
uCurrentTimeZoneId As Long
dwReserved As Long
End Type

Private Declare Function NtQuerySystemInformation Lib "ntdll" (ByVal dwInfoType As Long, ByVal lpStructure As Long, ByVal dwSize As Long, ByVal dwReserved As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private liOldIdleTime As LARGE_INTEGER
Private liOldSystemTime As LARGE_INTEGER

Public Sub Initialize()
Dim SysTimeInfo As SYSTEM_TIME_INFORMATION
Dim SysPerfInfo As SYSTEM_PERFORMANCE_INFORMATION
Dim Ret As Long

Ret = NtQuerySystemInformation(SYSTEM_TIMEINFORMATION, VarPtr(SysTimeInfo), LenB(SysTimeInfo), 0&)
If Ret <> NO_ERROR Then
Exit Sub
End If

Ret = NtQuerySystemInformation(SYSTEM_PERFORMANCEINFORMATION, VarPtr(SysPerfInfo), LenB(SysPerfInfo), ByVal 0&)
If Ret <> NO_ERROR Then
Exit Sub
End If

liOldIdleTime = SysPerfInfo.liIdleTime
liOldSystemTime = SysTimeInfo.liKeSystemTime
End Sub
Public Sub Terminate()
'
End Sub

Public Function Query() As Long
Dim SysBaseInfo As SYSTEM_BASIC_INFORMATION
Dim SysPerfInfo As SYSTEM_PERFORMANCE_INFORMATION
Dim SysTimeInfo As SYSTEM_TIME_INFORMATION
Dim dbIdleTime As Currency
Dim dbSystemTime As Currency
Dim Ret As Long

Query = -1&

Ret = NtQuerySystemInformation(SYSTEM_BASICINFORMATION, VarPtr(SysBaseInfo), LenB(SysBaseInfo), 0&)
If Ret <> NO_ERROR Then
Exit Function
End If

Ret = NtQuerySystemInformation(SYSTEM_TIMEINFORMATION, VarPtr(SysTimeInfo), LenB(SysTimeInfo), 0&)
If Ret <> NO_ERROR Then
Exit Function
End If

Ret = NtQuerySystemInformation(SYSTEM_PERFORMANCEINFORMATION, VarPtr(SysPerfInfo), LenB(SysPerfInfo), 0&)
If Ret <> NO_ERROR Then
Exit Function
End If

dbIdleTime = LI2Currency(SysPerfInfo.liIdleTime) - LI2Currency(liOldIdleTime)
dbSystemTime = LI2Currency(SysTimeInfo.liKeSystemTime) - LI2Currency(liOldSystemTime)

If dbSystemTime <> 0 Then
dbIdleTime = dbIdleTime / dbSystemTime
End If

dbIdleTime = 100& - dbIdleTime * 100& / SysBaseInfo.bKeNumberProcessors + 0.5
Query = Int(dbIdleTime)

'store new CPU's idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime
liOldSystemTime = SysTimeInfo.liKeSystemTime
End Function

Private Function LI2Currency( _
ByRef liInput As LARGE_INTEGER) As Currency
CopyMemory LI2Currency, liInput, LenB(liInput)
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
CPU-Auslastung1.312AndyBrandi25.06.03 18:11
Re: CPU-Auslastung238Frank125.06.03 19:03
Re: CPU-Auslastung552Peacemaker26.06.03 00:29
Re: CPU-Auslastung529--Florian--26.06.03 07:09
Re: CPU-Auslastung544Peacemaker26.06.03 16:30
Re: CPU-Auslastung516--Florian--26.06.03 16:35
Re: CPU-Auslastung505Peacemaker26.06.03 16:41
Re: CPU-Auslastung520--Florian--26.06.03 16:47
Re: CPU-Auslastung522Peacemaker26.06.03 16:54
Re: CPU-Auslastung536--Florian--26.06.03 16:57
Re: CPU-Auslastung204Martin0126.06.03 20:24
Re: CPU-Auslastung194Martin0126.06.03 20:24
Re: CPU-Auslastung172Martin0126.06.03 20:24
Re: CPU-Auslastung157Martin0126.06.03 20:25
Re: CPU-Auslastung245Martin0126.06.03 20:25
Re: CPU-Auslastung170Martin0126.06.03 20:30
Re: CPU-Auslastung530--Florian--26.06.03 20:34
Re: CPU-Auslastung555Peacemaker26.06.03 20:51
Re: CPU-Auslastung491Jack7718.07.04 00:21
Re: CPU-Auslastung458Jack7718.07.04 15:06
Re: CPU-Auslastung521Jack7719.07.04 16:07
Re: CPU-Auslastung468luet18.07.04 19:30
Re: CPU-Auslastung494Jack7718.07.04 20:15
Re: CPU-Auslastung509Jack7719.07.04 17:16
Re: CPU-Auslastung507Jack7719.07.04 17:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel