Win32 _ Thread-Klasse

Die  Win32-Thread-WMI-Klasse stellt einen Ausführungsthread dar. _ Während ein Prozess über einen Ausführungsthread verfügen muss, kann der Prozess andere Threads erstellen, um Aufgaben parallel auszuführen. Threads nutzen die Prozessumgebung gemeinsam, daher verwenden mehrere Threads unter demselben Prozess weniger Arbeitsspeicher als die gleiche Anzahl von Prozessen.

Die folgende Syntax wurde aus MOF-Code (Managed Object Format, verwaltetes Objektformat) vereinfacht und enthält alle geerbten Eigenschaften. Eigenschaften und Methoden werden in alphabetischer Reihenfolge und nicht in MOF-Reihenfolge sortiert.

Syntax

[Dynamic, Provider("CIMWin32"), UUID("{8502C4DD-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_Thread : CIM_Thread
{
  string   Caption;
  string   CreationClassName;
  string   CSCreationClassName;
  string   CSName;
  string   Description;
  uint64   ElapsedTime;
  uint16   ExecutionState;
  string   Handle;
  datetime InstallDate;
  uint64   KernelModeTime;
  string   Name;
  string   OSCreationClassName;
  string   OSName;
  uint32   Priority;
  uint32   PriorityBase;
  string   ProcessCreationClassName;
  string   ProcessHandle;
  uint32   StartAddress;
  string   Status;
  uint32   ThreadState;
  uint32   ThreadWaitReason;
  uint64   UserModeTime;
};

Member

Die Win32 _ Thread-Klasse verfügt über diese Typen von Membern:

Eigenschaften

Die Win32 _ Thread-Klasse verfügt über diese Eigenschaften.

Caption

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: MaxLen (64), DisplayName ("Caption")

Kurze Beschreibung des Objekts.

Diese Eigenschaft wird von CIM _ ManagedSystemElementgeerbt.

CreationClassName

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: _ Cim-Schlüssel, MaxLen (256)

Name der ersten konkreten Klasse, die in der Vererbungskette angezeigt wird, die bei der Erstellung einer Instanz verwendet wird. Bei Verwendung mit den anderen Schlüsseleigenschaften der -Klasse ermöglicht diese Eigenschaft die eindeutige Identifizierung aller Instanzen dieser Klasse und ihrer Unterklassen.

Diese Eigenschaft wird vom _ CIM-Threadgeerbt.

CSCreationClassName

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: Weitergegeben ("_ CIM-Prozess.CSCreationClassName"), _ Cim-Schlüssel, MaxLen (256)

Name der Erstellungsklasse des Bereichscomputersystems.

Diese Eigenschaft wird vom _ CIM-Threadgeerbt.

CSName

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: Weitergegeben ("_ CIM-Prozess.CSName"), _ Cim-Schlüssel, MaxLen (256)

Name des Bereichscomputersystems.

Diese Eigenschaft wird vom _ CIM-Threadgeerbt.

Beschreibung

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: DisplayName ("Beschreibung")

Eine Beschreibung des Objekts.

Diese Eigenschaft wird von CIM _ ManagedSystemElementgeerbt.

ElapsedTime

Datentyp: uint64

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("Win32API-Leistungsdatenstrukturen | | PERF _ OBJECT _ TYPE | PerfTime"), Einheiten ("Millisekunden")

Gesamtausführungszeit in Millisekunden, die diesem Thread seit seiner Erstellung zur Verfügung gestellt wurde.

Weitere Informationen zur Verwendung von uint64-Werten in Skripts finden Sie unter Skripterstellung in WMI.

ExecutionState

Datentyp: uint16

Zugriffstyp: Schreibgeschützt

Aktuelle Betriebsbedingung des Threads.

Diese Eigenschaft wird vom _ CIM-Threadgeerbt.

Unbekannt (0)

Andere (1)

Bereit (2)

Wird ausgeführt (3)

Blockiert (4)

Angehalten blockiert (5)

Suspended Ready (6)

Handle

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: MaxLen (256), Außerkraftsetzung ("Handle"), MappingStrings ("Win32API | Tool Help Structures | THREADENTRY32 | th32ThreadID")

Handle für einen Thread. Das Handle verfügt standardmäßig über Vollzugriffsrechte. Mit dem richtigen Sicherheitszugriff kann das Handle in jeder Funktion verwendet werden, die ein Threadhandle akzeptiert. Abhängig vom Vererbungsflag, das beim Erstellen angegeben wird, kann dieses Handle von untergeordneten Prozessen geerbt werden.

InstallDate

Datentyp: datetime

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("MIF. DMTF | ComponentID | 001.5"), DisplayName ("Installationsdatum")

Das Objekt wurde installiert. Diese Eigenschaft benötigt keinen Wert, um anzugeben, dass das Objekt installiert ist.

Diese Eigenschaft wird von CIM _ ManagedSystemElementgeerbt.

KernelModeTime

Datentyp: uint64

Zugriffstyp: Schreibgeschützt

Qualifizierer: Überschreiben ("KernelModeTime"), MappingStrings ("Win32API-Leistungsdatenstrukturen | | PERF _ OBJECT _ TYPE | PrivilegedTime"), Einheiten ("100 Nanosekunden")

Zeit im Kernelmodus in Einheiten von 100 Nanosekunden. Wenn diese Informationen nicht verfügbar sind, sollte der Wert 0 (null) verwendet werden.

Weitere Informationen zur Verwendung von uint64-Werten in Skripts finden Sie unter Skripterstellung in WMI.

Name

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: DisplayName ("Name")

Bezeichnung, mit der das Objekt bekannt ist. Bei einer Unterklasse kann die Eigenschaft als Schlüsseleigenschaft überschrieben werden.

Diese Eigenschaft wird von CIM _ ManagedSystemElementgeerbt.

OSCreationClassName

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: Weitergegeben ("_ CIM-Prozess.OSCreationClassName"), _ Cim-Schlüssel, MaxLen (256)

Name der Erstellungsklasse des Bereichsbetriebssystems.

Diese Eigenschaft wird vom _ CIM-Threadgeerbt.

OSName

Datentyp: String

Zugriffstyp: Schreibgeschützt

Qualifizierer: Propagated ("CIM _ Process.OSName"), Cim _ Key, MaxLen (256)

Name des Bereichsbetriebssystems.

Diese Eigenschaft wird vom _ CIM-Thread geerbt.

Priority

Datentyp: uint32

Zugriffstyp: Schreibgeschützt

Qualifizierer: Override ("Priority"), MappingStrings ("Win32API | Tool Help Structures | THREADENTRY32 | tpDeltaPri")

Dynamische Priorität des Threads. Jeder Thread hat eine dynamische Priorität, mit der der Scheduler bestimmt, welcher Thread ausgeführt werden soll. Anfänglich ist die dynamische Priorität eines Threads mit der Basispriorität identisch. Das System kann die dynamische Priorität erhöhen und senken, um sicherzustellen, dass es reaktionsfähig ist (garantiert, dass keine Threads für die Prozessorzeit verhungern). Das System erhöht nicht die Priorität von Threads mit einer Basisprioritätsstufe zwischen 16 und 31. Nur Threads mit einer Basispriorität zwischen 0 und 15 erhalten dynamische Prioritätssteigerungen. Höhere Zahlen weisen auf höhere Prioritäten hin.

PriorityBase

Datentyp: uint32

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("Win32API | Performance Data Structures | PERF _ OBJECT _ TYPE | PerfPriorityBase")

Aktuelle Basispriorität eines Threads. Das Betriebssystem kann die dynamische Priorität des Threads über die Basispriorität erhöhen, wenn der Thread Benutzereingaben verwendet, oder es kann die Priorität auf die Basispriorität senken, wenn der Thread computegebunden wird. Die PriorityBase-Eigenschaft kann einen Wert zwischen 0 und 31 haben.

ProcessCreationClassName

Datentyp: Zeichenfolge

Zugriffstyp: Schreibgeschützt

Qualifizierer: Propagated ("CIM _ Process.CreationClassName"), Cim _ Key, MaxLen (256)

Der Wert der CreationClassName-Eigenschaft des Bereichsprozesses.

Diese Eigenschaft wird vom _ CIM-Thread geerbt.

ProcessHandle

Datentyp: Zeichenfolge

Zugriffstyp: Schreibgeschützt

Qualifizierer: MaxLen (256), Override ("ProcessHandle"), Propagated ("CIM _ Process.Handle"), MappingStrings ("Win32API | Tool Help Structures | THREADENTRY32 | th32OwnerProcessID")

Prozess, der den Thread erstellt hat. Der Inhalt dieser Eigenschaft kann von Windows API-Elementen (Application Programming Interface) verwendet werden.

StartAddress

Datentyp: uint32

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("WIn32API | Thread Object | LPTHREAD _ START ROUTINE _ | lpStartAddress")

Startadresse des Threads. Da jede Anwendung mit entsprechendem Zugriff auf den Thread den Kontext des Threads ändern kann, kann dieser Wert nur eine Näherung der Startadresse des Threads sein.

Status

Datentyp: Zeichenfolge

Zugriffstyp: Schreibgeschützt

Qualifizierer: MaxLen (10), DisplayName ("Status")

Aktueller Status des Objekts. Es können verschiedene betriebsbereite und nicht betriebsbereite Status definiert werden. Folgende Betriebsstatus sind möglich: "OK", "Heruntergestuft" und "Fehler vor dem Ausfall" (ein Element, z. B. ein SMART-fähiges Festplattenlaufwerk, funktioniert möglicherweise ordnungsgemäß, aber es wird in naher Zukunft ein Fehler vorhergesagt). Nicht operative Status sind: "Error", "Starting", "Stopping" und "Service". Letzteres, "Dienst", kann während der Spiegelung eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder bei anderen administrativen Aufgaben angewendet werden. Nicht alle derartigen Arbeiten sind online, aber das verwaltete Element ist weder "OK" noch in einem der anderen Zustände.

Diese Eigenschaft wird von CIM _ ManagedSystemElement geerbt.

Die Werte sind:

OK ("OK")

Fehler ("Fehler")

Heruntergestuft ("Heruntergestuft")

Unbekannt ("Unbekannt")

Pred Fail ("Pred Fail")

Wird gestartet ("Wird gestartet")

Wird beendet ("Wird beendet")

Dienst ("Dienst")

Striche ("Strich")

NonRecover ("NonRecover")

Kein Kontakt ("Kein Kontakt")

Lost Comm ("Lost Comm")

Threadstate

Datentyp: uint32

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("Win32API | Thread State")

Aktueller Ausführungszustand für den Thread.

Initialisiert (0)

Initialisiert: Sie wird vom Mikrokernel erkannt.

Bereit (1)

Bereit: Sie ist für die Ausführung auf dem nächsten verfügbaren Prozessor vorbereitet.

Wird ausgeführt (2)

Wird ausgeführt– Wird ausgeführt.

Standby (3)

Standby : Es wird gerade ausgeführt. Es kann immer nur ein Thread gleichzeitig in diesem Zustand sein.

Beendet (4)

Beendet: Die Ausführung ist abgeschlossen.

Wartend (5)

Warten: Er ist nicht bereit für den Prozessor. Wenn er bereit ist, wird er neu einplanet.

Übergang (6)

Übergang: Der Thread wartet auf andere Ressourcen als den Prozessor.

Unbekannt (7)

Unbekannt: Der Threadzustand ist unbekannt.

ThreadWaitReason

Datentyp: uint32

Zugriffstyp: Schreibgeschützt

Qualifizierer: MappingStrings ("Win32API | Thread Wait Reason")

Grund, warum der Thread wartet. Dieser Wert ist nur gültig, wenn das ThreadState-Member auf Transition (6) festgelegt ist. Ereignispaare ermöglichen die Kommunikation mit geschützten Subsystemen.

Executive (0)

FreePage (1)

FreePage

PageIn (2)

PoolAllocation (3)

ExecutionDelay (4)

FreePage (5)

PageIn (6)

Executive (7)

FreePage (8)

PageIn (9)

PoolAllocation (10)

ExecutionDelay (11)

FreePage (12)

PageIn (13)

EventPairHigh (14)

EventPairLow (15)

LPCReceive (16)

LPCReply (17)

VirtualMemory (18)

PageOut (19)

Unbekannt (20)

UserModeTime

Datentyp: uint64

Zugriffstyp: Schreibgeschützt

Qualifizierer: Überschreiben ("UserModeTime"), MappingStrings ("Win32API-Leistungsdatenstrukturen | | PERF _ OBJECT _ TYPE | UserTime"), Einheiten ("100 Nanosekunden")

Zeit im Benutzermodus in Einheiten von 100 Nanosekunden. Wenn diese Informationen nicht verfügbar sind, sollte der Wert 0 (null) verwendet werden.

Weitere Informationen zur Verwendung von uint64-Werten in Skripts finden Sie unter Skripterstellung in WMI.

Hinweise

Die _ Win32-Threadklasse wird von _ CIM-Threadabgeleitet.

Übersicht

Für die routinemäßige tägliche Überwachung gibt es in der Regel wenig Grund, eine detaillierte Liste der Threads und der zugehörigen Eigenschaften zu haben. Computer erstellen und löschen im Laufe eines Tages Tausende von Threads, und einige dieser Erstellungen oder Löschungen sind für jeden sinnvoll, außer für den Entwickler, der die Software geschrieben hat.

Wenn Sie jedoch Probleme mit einer Anwendung beheben, können Sie anhand der Nachverfolgung der einzelnen Threads für einen Prozess ermitteln, wann Threads erstellt und wann (oder ob) sie zerstört werden. Da Threads, die erstellt, aber nicht zerstört werden, zu Speicherverlusten führen, kann die Nachverfolgung einzelner Threads hilfreiche Informationen für Supporttechniker sein. Ebenso kann die Identifizierung von Threadprioritäten dabei helfen, Threads zu ermitteln, die durch ausführen mit einer ungewöhnlich hohen Priorität CPU-Zyklen vorentäuschen, die von anderen Threads und anderen Prozessen benötigt werden.

Verwenden des _ Win32-Threads

Wie im vorherigen Syntaxblock impliziert, meldet die _ Win32-Threadklasse nicht den Namen des Prozesses, unter dem jeder Thread ausgeführt wird. Stattdessen wird die ID des Prozesses, unter dem der Thread ausgeführt wird, angezeigt. Um den Namen eines Prozesses und eine Liste aller threads zurückzugeben, muss Ihr Skript Folgendes ausführen:

  1. Verbinden zur Win32 _ Process-Klasse und geben die Liste der Prozesse und deren Prozess-IDs zurück.
  2. Speichern Sie diese Informationen vorübergehend in einem Array- oder Wörterbuchobjekt.
  3. Geben Sie für jede Prozess-ID die Liste der Threads für diesen Prozess zurück, und zeigen Sie dann den Prozessnamen und die Liste der Threads an.

Beispiele

Im folgenden VBScript-Beispiel werden die threads überwacht, die auf einem Computer ausgeführt werden.

Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
For Each objProcess in colProcesses
 objDictionary.Add objProcess.ProcessID, objProcess.Name
Next
Set colThreads = objWMIService.ExecQuery("SELECT * FROM Win32_Thread")
For Each objThread in colThreads
 intProcessID = CInt(objThread.ProcessHandle)
 strProcessName = objDictionary.Item(intProcessID)
 Wscript.Echo strProcessName & VbTab & objThread.ProcessHandle & _
              VbTab & objThread.Handle & VbTab & objThread.ThreadState
Next

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Namespace
Stamm \ CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Siehe auch

_CIM-Thread

Betriebssystemklassen