classe Win32_Thread
La classe WMIWin32_Thread rappresenta un thread di esecuzione. Mentre un processo deve avere un thread di esecuzione, il processo può creare altri thread per eseguire attività in parallelo. I thread condividono l'ambiente di processo, quindi più thread nello stesso processo usano meno memoria rispetto allo stesso numero di processi.
La sintassi seguente è semplificata dal codice MOF (Managed Object Format) e include tutte le proprietà ereditate. Le proprietà e i metodi sono in ordine alfabetico, non in ordine MOF.
Sintassi
[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;
};
Members
La classe Win32_Thread include questi tipi di membri:
Proprietà
La classe Win32_Thread ha queste proprietà.
-
Didascalia
-
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: MaxLen (64), DisplayName ("Caption")
Breve descrizione dell'oggetto.
Questa proprietà viene ereditata da CIM_ManagedSystemElement.
-
-
CreationClassName
-
Nome della prima classe concreta da visualizzare nella catena di ereditarietà utilizzata nella creazione di un'istanza. Se utilizzata con le altre proprietà chiave della classe, questa proprietà consente di identificare in modo univoco tutte le istanze di questa classe e delle relative sottoclassi.
Questa proprietà viene ereditata da CIM_Thread.
-
CSCreationClassName
-
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: propagati ("CIM_Process. CSCreationClassName"), Cim_Key, MaxLen (256)
Nome della classe di creazione del sistema computer di ambito.
Questa proprietà viene ereditata da CIM_Thread.
-
-
CSName
-
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: propagati ("CIM_Process. CSName"), Cim_Key, MaxLen (256)
Nome del sistema computer di definizione dell'ambito.
Questa proprietà viene ereditata da CIM_Thread.
-
-
Descrizione
-
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: DisplayName ("Description")
Descrizione dell'oggetto.
Questa proprietà viene ereditata da CIM_ManagedSystemElement.
-
-
ElapsedTime
-
-
Tipo di dati: uint64
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("Win32API| Strutture dei dati sulle prestazioni | PERF_OBJECT_TYPE| PerfTime"), unità ("millisecondi")
Tempo di esecuzione totale, espresso in millisecondi, assegnato a questo thread dopo la creazione.
Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.
-
-
ExecutionState
-
-
Tipo di dati: uint16
-
Tipo di accesso: sola lettura
Condizione operativa corrente del thread.
Questa proprietà viene ereditata da CIM_Thread.
-
-
Sconosciuto (0)
-
Altro (1)
-
Pronto (2)
-
Esecuzione (3)
-
Bloccato (4)
-
Sospeso bloccato (5)
-
Pronto sospeso (6)
Handle
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: MaxLen (256), Override ("Handle"), MappingStrings ("Win32API| Strutture della Guida degli strumenti | THREADENTRY32|th32ThreadID")
Handle in un thread. L'handle ha diritti di accesso completi per impostazione predefinita. Con l'accesso di sicurezza corretto, l'handle può essere usato in qualsiasi funzione che accetta un handle di thread. A seconda del flag di ereditarietà specificato al momento della creazione, questo handle può essere ereditato dai processi figlio.
InstallDate
-
Tipo di dati: datetime
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("MIF. DMTF| ComponentID|001.5"), DisplayName ("Data di installazione")
L'oggetto è stato installato. Questa proprietà non richiede un valore per indicare che l'oggetto è installato.
Questa proprietà viene ereditata da CIM_ManagedSystemElement.
KernelModeTime
-
Tipo di dati: uint64
-
Tipo di accesso: sola lettura
-
Qualificatori: Override ("KernelModeTime"), MappingStrings ("Win32API| Strutture dei dati sulle prestazioni | PERF_OBJECT_TYPE| PrivilegedTime"), unità ("100 nanosecondi")
Tempo in modalità kernel, in unità di 100 nanosecondi. Se queste informazioni non sono disponibili, è necessario usare il valore 0 (zero).
Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.
Nome
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: DisplayName ("Name")
Etichetta in base alla quale l'oggetto è noto. Quando viene sottoclassata, è possibile eseguire l'override della proprietà in modo che sia una proprietà chiave.
Questa proprietà viene ereditata da CIM_ManagedSystemElement.
OSCreationClassName
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: propagati ("CIM_Process. OSCreationClassName"), Cim_Key, MaxLen (256)
Nome della classe di creazione del sistema operativo di definizione dell'ambito.
Questa proprietà viene ereditata da CIM_Thread.
OSName
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: propagati ("CIM_Process. OSName"), Cim_Key, MaxLen (256)
Nome del sistema operativo di definizione dell'ambito.
Questa proprietà viene ereditata da CIM_Thread.
Priorità
-
Tipo di dati: uint32
-
Tipo di accesso: sola lettura
-
Qualificatori: Override ("Priority"), MappingStrings ("Win32API| Strutture della Guida degli strumenti | THREADENTRY32|tpDeltaPri")
Priorità dinamica del thread. Ogni thread ha una priorità dinamica usata dall'utilità di pianificazione per determinare il thread da eseguire. Inizialmente, la priorità dinamica di un thread corrisponde alla priorità di base. Il sistema può aumentare e ridurre la priorità dinamica, per garantire che sia reattivo (garantendo che nessun thread venga risolto per il tempo del processore). Il sistema non aumenta la priorità dei thread con un livello di priorità di base compreso tra 16 e 31. Solo i thread con priorità di base compresa tra 0 e 15 ricevono boost di priorità dinamica. I numeri più alti indicano priorità più elevate.
PriorityBase
-
Tipo di dati: uint32
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("Win32API| Strutture dei dati sulle prestazioni | PERF_OBJECT_TYPE| PerfPriorityBase")
Priorità di base corrente di un thread. Il sistema operativo può aumentare la priorità dinamica del thread al di sopra della priorità di base se il thread gestisce l'input dell'utente o abbassarlo verso la priorità di base se il thread diventa associato al calcolo. La proprietà PriorityBase può avere un valore compreso tra 0 e 31.
ProcessCreationClassName
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: propagati ("CIM_Process. CreationClassName"), Cim_Key, MaxLen (256)
Valore della proprietà CreationClassName del processo di ambito.
Questa proprietà viene ereditata da CIM_Thread.
ProcessHandle
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: MaxLen (256), Override ("ProcessHandle"), Propagated ("CIM_Process. Handle"), MappingStrings ("Win32API| Strutture della Guida degli strumenti | THREADENTRY32|th32OwnerProcessID")
Processo che ha creato il thread. Il contenuto di questa proprietà può essere usato dagli elementi API (Application Programming Interface) di Windows.
StartAddress
-
Tipo di dati: uint32
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("WIn32API| Oggetto Thread | LPTHREAD_START_ROUTINE|lpStartAddress")
Indirizzo iniziale del thread. Poiché qualsiasi applicazione con accesso appropriato al thread può modificare il contesto del thread, questo valore può essere solo un'approssimazione dell'indirizzo iniziale del thread.
Status
-
Tipo di dati: string
-
Tipo di accesso: sola lettura
-
Qualificatori: MaxLen (10), DisplayName ("Status")
Stato corrente dell'oggetto. È possibile definire vari stati operativi e non operativi. Gli stati operativi includono: "OK", "Degraded" e "Pred Fail" (un elemento, ad esempio un'unità disco rigido abilitata per SMART, potrebbe funzionare correttamente, ma prevedere un errore nel prossimo futuro). Gli stati non operativi includono: "Error", "Starting", "Stopping" e "Service". Quest'ultimo, "Servizio", può essere applicato durante il ridimensionamento mirror di un disco, il ricaricamento di un elenco di autorizzazioni utente o altre operazioni amministrative. Non tutto questo lavoro è online, ma l'elemento gestito non è "OK" né in uno degli altri stati.
Questa proprietà viene ereditata da CIM_ManagedSystemElement.
I valori possibili sono:
OK ("OK")
Errore ("Errore ")
Danneggiato ("danneggiato ")
Sconosciuto ("Sconosciuto ")
Pred Fail ("Pred Fail ")
Avvio ("Avvio ")
Arresto ("arresto ")
Servizio ("Servizio ")
Sottolineato ("sottolineato ")
NonRecover ("NonRecover ")
Nessun contatto ("Nessun contatto")
Lost Comm ("Lost Comm")
ThreadState
-
Tipo di dati: uint32
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("Win32API| Stato thread")
Stato di esecuzione corrente per il thread.
Inizializzato (0)
Inizializzato: viene riconosciuto dal microkernel.
Pronto (1)
Pronto: è pronto per l'esecuzione nel successivo processore disponibile.
Esecuzione (2)
In esecuzione: è in esecuzione.
Standby (3)
Standby: sta per essere eseguito, solo un thread può trovarsi in questo stato alla volta.
Terminazione (4)
Terminato: l'esecuzione è stata completata.
In attesa (5)
In attesa: non è pronto per il processore, quando pronto, verrà riprogrammato.
Transizione (6)
Transizione: il thread è in attesa di risorse diverse dal processore,
Sconosciuto (7)
Sconosciuto: lo stato del thread è sconosciuto.
ThreadWaitReason
-
Tipo di dati: uint32
-
Tipo di accesso: sola lettura
-
Qualificatori: MappingStrings ("Win32API| Motivo attesa thread")
Motivo per cui il thread è in attesa. Questo valore è valido solo se il membro ThreadState è impostato su Transition (6). Le coppie di eventi consentono la comunicazione con sottosistemi protetti.
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)
Sconosciuto (20)
UserModeTime
-
Tipo di dati: uint64
-
Tipo di accesso: sola lettura
-
Qualificatori: Override ("UserModeTime"), MappingStrings ("Win32API| Strutture dei dati sulle prestazioni| PERF_OBJECT_TYPE| UserTime"), Unità ("100 nanosecondi")
Tempo in modalità utente, in 100 unità nanosecondi. Se queste informazioni non sono disponibili, deve essere usato un valore pari a 0 (zero).
Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.
Commenti
La classe Win32_Thread deriva da CIM_Thread.
Panoramica
Per il monitoraggio giornaliero di routine, in genere è necessario avere un elenco dettagliato dei thread e delle relative proprietà associate. I computer creano ed eliminano migliaia di thread durante il corso di un giorno e poche di queste creazioni o eliminazioni sono significative per chiunque ma lo sviluppatore che ha scritto il software.
Tuttavia, quando si verificano problemi con un'applicazione, il rilevamento dei singoli thread per un processo consente di identificare quando i thread vengono creati e quando (o se) vengono eliminati. Poiché i thread creati ma non eliminati causano perdite di memoria, il rilevamento dei singoli thread può essere utile per i tecnici di supporto. Allo stesso modo, l'identificazione delle priorità del thread può aiutare a individuare i thread che, eseguendo a una priorità anormale, preempting cpu cycles necessario da altri thread e altri processi.
Uso di Win32_Thread
Come implicito nel blocco di sintassi precedente, la classe Win32_Thread non segnala il nome del processo in cui viene eseguito ogni thread. Segnala invece l'ID del processo in cui viene eseguito il thread. Per restituire il nome di un processo e un elenco di tutti i relativi thread, lo script deve:
- Connettersi alla classe Win32_Process e restituire l'elenco dei processi e i relativi ID processo.
- Archiviare temporaneamente queste informazioni in una matrice o in un oggetto Dictionary.
- Per ogni ID processo, restituire l'elenco dei thread per tale processo e quindi visualizzare il nome del processo e l'elenco dei thread.
Esempio
L'esempio VBScript seguente monitora i thread in esecuzione in un computer.
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
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Spazio dei nomi |
Radice\CIMV2 |
MOF |
|
DLL |
|
Vedi anche