Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.Management.Win32_PerfRawData_PerfProc_Process aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Um zu demonstrieren, dass es in WMI oft mehrere Wege gibt, sei hier noch gezeigt, dass man fast die gleichen Informationen auch über die Klasse Win32PerfRawData_PerfProcProcess erhalten kann. Die Unterschiede sind folgende:
1. Es gibt auch eine Win32PerfRawData_PerfProc_Process-Instanz mit Namen Total, die die aggregierten Daten aller Prozesse enthält.
2. Das Attribut WorkingSetSize heißt hier einfach nur WorkingSet.
3. Das Attribut Name enthält die Kurzform des Prozessnamens (ohne .exe).
WMI ermöglicht über den Performance Counter Provider Zugriff auf zahlreiche Leistungsdaten des Windows-Systems. Wenn Sie die PerfRawData-Klassen nicht finden, starten Sie den WMI-Dienst einmalig manuell an der Kommandozeile mit Winmgmt /resyncperf.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Ausgabe der Speichernutzung der laufenden Prozesse
' (C) Holger@Schwichtenberg.de
' ============================
Sub WMI_Speichernutzung2()
Dim P As ROOT.CIMV2.PerfRawDataPerfProcProcess
Dim PMenge As ROOT.CIMV2.PerfRawDataPerfProcProcess.
PerfRawDataPerfProcProcessCollection
PMenge = P.GetInstances()
out("Speichernutzung der laufenden Prozesse:")
For Each P In PMenge
out(P.Name & ": " & _
Convert.ToDouble(P.WorkingSet) / 1024 & " KB")
Next
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Management;
using FCL_Buch.ROOT;
using FCL_Buch;
namespace FCLBuch._SystemManagement {
public class SamplesWMIBeispiele {
public void WMI_Speichernutzung2() {
// Ausgabe der Speichernutzung der laufenden Prozesse
PerfRawDataPerfProc_Process.PerfRawData_PerfProc_ProcessCollection pMenge = PerfRawData_PerfProcProcess.GetInstances();
FclOutput.PrintOutSubHeader("Speichernutzung der laufenden Prozesse:");
foreach (PerfRawDataPerfProcProcess p in pMenge)
FclOutput.PrintOut(p.Name + ": " + Convert.ToDouble(p.WorkingSet) / 1024 + " KB");
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Management.Win32_PerfRawData_PerfProc_Process'
Übersicht über den FCL-Namensraum 'System.Management'
.NET & Visual Studio Community Portal