Win32_Thread classe
La classe WMI Win32_Thread représente un thread d’exécution. Alors qu’un processus doit avoir un thread d’exécution, il peut créer d’autres threads pour exécuter des tâches en parallèle. Les threads partagent l’environnement de processus, de sorte que plusieurs threads sous le même processus utilisent moins de mémoire que le même nombre de processus.
La syntaxe suivante est simplifiée par rapport au code MOF (Managed Object Format) et inclut toutes les propriétés héritées. Les propriétés et les méthodes sont dans l’ordre alphabétique, et non dans l’ordre MOF.
Syntaxe
[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;
};
Membres
La classe Win32_Thread a les types de membres suivants :
Propriétés
La classe Win32_Thread a ces propriétés.
-
Caption
-
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : MaxLen (64), DisplayName (« Caption »)
Brève description de l’objet.
Cette propriété est héritée de CIM_ManagedSystemElement.
-
-
CreationClassName
-
Nom de la première classe concrète à apparaître dans la chaîne d’héritage utilisée lors de la création d’un instance. Lorsqu’elle est utilisée avec les autres propriétés de clé de la classe, cette propriété permet à toutes les instances de cette classe et à ses sous-classes d’être identifiées de manière unique.
Cette propriété est héritée de CIM_Thread.
-
CSCreationClassName
-
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : propagé (« CIM_Process. CSCreationClassName »), Cim_Key, MaxLen (256)
Nom de la classe de création du système informatique d’étendue.
Cette propriété est héritée de CIM_Thread.
-
-
CSName
-
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : propagé (« CIM_Process. CSName »), Cim_Key, MaxLen (256)
Nom du système informatique d’étendue.
Cette propriété est héritée de CIM_Thread.
-
-
Description
-
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : DisplayName (« Description »)
Description de l’objet.
Cette propriété est héritée de CIM_ManagedSystemElement.
-
-
ElapsedTime
-
-
Type de données : uint64
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« Win32API| Structures de données de performances | PERF_OBJECT_TYPE| PerfTime « ), Unités (« millisecondes »)
Durée totale d’exécution, en millisecondes, donnée à ce thread depuis sa création.
Pour plus d’informations sur l’utilisation de valeurs uint64 dans des scripts, voir Scripts dans WMI.
-
-
ExecutionState
-
-
Type de données : uint16
-
Type d'accès : Lecture seule
Condition de fonctionnement actuelle du thread.
Cette propriété est héritée de CIM_Thread.
-
-
Inconnu (0)
-
Autre (1)
-
Prêt (2)
-
En cours d’exécution (3)
-
Bloqué (4)
-
Suspendu bloqué (5)
-
Suspendu prêt (6)
Handle
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : MaxLen (256), Override (« Handle »), MappingStrings (« Win32API| Structures d’aide de l’outil | THREADENTRY32|th32ThreadID »)
Handle vers un thread. Le handle dispose de droits d’accès complets par défaut. Avec l’accès de sécurité approprié, le handle peut être utilisé dans n’importe quelle fonction qui accepte un handle de thread. Selon l’indicateur d’héritage spécifié lors de sa création, ce handle peut être hérité par les processus enfants.
InstallDate
-
Type de données : datetime
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« MIF. DMTF| ComponentID|001.5 »), DisplayName (« Date d’installation »)
L’objet a été installé. Cette propriété n’a pas besoin d’une valeur pour indiquer que l’objet est installé.
Cette propriété est héritée de CIM_ManagedSystemElement.
KernelModeTime
-
Type de données : uint64
-
Type d'accès : Lecture seule
-
Qualificateurs : Override (« KernelModeTime »), MappingStrings (« Win32API| Structures de données de performances | PERF_OBJECT_TYPE| PrivilegedTime »), unités (« 100 nanosecondes »)
Temps en mode noyau, en unités de 100 nanosecondes. Si ces informations ne sont pas disponibles, la valeur 0 (zéro) doit être utilisée.
Pour plus d’informations sur l’utilisation de valeurs uint64 dans des scripts, voir Scripts dans WMI.
Nom
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : DisplayName (« Name »)
Étiquette par laquelle l’objet est connu. En cas de sous-classe, la propriété peut être remplacée pour être une propriété de clé.
Cette propriété est héritée de CIM_ManagedSystemElement.
OSCreationClassName
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : propagé (« CIM_Process. OSCreationClassName »), Cim_Key, MaxLen (256)
Nom de la classe de création du système d’exploitation d’étendue.
Cette propriété est héritée de CIM_Thread.
OSName
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : propagé (« CIM_Process. OSName »), Cim_Key, MaxLen (256)
Nom du système d’exploitation d’étendue.
Cette propriété est héritée de CIM_Thread.
Priorité
-
Type de données : uint32
-
Type d'accès : Lecture seule
-
Qualificateurs : Remplacement (« Priorité »), MappingStrings (« Win32API | Structures d’aide de l’outil | THREADENTRY32|tpDeltaPri »)
Priorité dynamique du thread. Chaque thread a une priorité dynamique que le planificateur utilise pour déterminer le thread à exécuter. Initialement, la priorité dynamique d’un thread est la même que sa priorité de base. Le système peut augmenter et réduire la priorité dynamique, pour s’assurer qu’il est réactif (garantissant qu’aucun thread n’est privé de temps processeur). Le système n’améliore pas la priorité des threads dont le niveau de priorité de base est compris entre 16 et 31. Seuls les threads dont la priorité de base est comprise entre 0 et 15 reçoivent des améliorations de priorité dynamique. Des nombres plus élevés indiquent des priorités plus élevées.
PriorityBase
-
Type de données : uint32
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« Win32API| Structures de données de performances | PERF_OBJECT_TYPE| PerfPriorityBase »)
Priorité de base actuelle d’un thread. Le système d’exploitation peut augmenter la priorité dynamique du thread au-dessus de la priorité de base si le thread gère l’entrée utilisateur, ou la réduire vers la priorité de base si le thread devient lié au calcul. La propriété PriorityBase peut avoir une valeur comprise entre 0 et 31.
ProcessCreationClassName
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : propagé (« CIM_Process. CreationClassName »), Cim_Key, MaxLen (256)
Valeur de la propriété CreationClassName du processus d’étendue.
Cette propriété est héritée de CIM_Thread.
ProcessHandle
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : MaxLen (256), Override (« ProcessHandle »), Propagated (« CIM_Process. Handle »), MappingStrings (« Win32API| Structures d’aide de l’outil | THREADENTRY32|th32OwnerProcessID »)
Processus qui a créé le thread. Le contenu de cette propriété peut être utilisé par les éléments d’interface de programmation d’application (API) Windows.
StartAddress
-
Type de données : uint32
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« WIn32API| Thread, objet | LPTHREAD_START_ROUTINE|lpStartAddress »)
Adresse de départ du thread. Étant donné que toute application disposant d’un accès approprié au thread peut modifier le contexte du thread, cette valeur ne peut être qu’une approximation de l’adresse de départ du thread.
État
-
Type de données : chaîne
-
Type d'accès : Lecture seule
-
Qualificateurs : MaxLen (10), DisplayName (« Status »)
Status actuelle de l’objet. Différents états opérationnels et non opérationnels peuvent être définis. Les états opérationnels incluent : « OK », « Détérioré » et « Échec anticipé » (un élément, tel qu’un lecteur de disque dur smart, peut fonctionner correctement, mais prédire une défaillance dans un avenir proche). Les états non coopératifs incluent : « Erreur », « Démarrage », « Arrêt » et « Service ». Ce dernier, « Service », peut s’appliquer lors de la miroir-resilver d’un disque, du rechargement d’une liste d’autorisations utilisateur ou d’autres tâches administratives. Tous ces travaux ne sont pas en ligne, mais l’élément managé n’est ni « OK », ni dans l’un des autres états.
Cette propriété est héritée de CIM_ManagedSystemElement.
Les valeurs sont :
OK (« OK »)
Erreur (« Erreur »)
Détérioré (« Détérioré »)
Inconnu (« Inconnu »)
Échec de la préversion (« Échec prédé »)
Démarrage (« Démarrage »)
Arrêt (« Arrêt »)
Service (« Service »)
Stressé (« Stressé »)
NonRecover (« NonRecover »)
Aucun contact (« Aucun contact »)
Lost Comm (« Lost Comm »)
ThreadState
-
Type de données : uint32
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« Win32API| État du thread »)
État d’exécution actuel du thread.
Initialisé (0)
Initialisé : il est reconnu par le microknel.
Prêt (1)
Prêt : il est prêt à s’exécuter sur le processeur disponible suivant.
Exécution (2)
En cours d’exécution : elle est en cours d’exécution.
Veille (3)
Veille : il est sur le point de s’exécuter, un seul thread peut être dans cet état à la fois.
Terminé (4)
Terminé : l’exécution est terminée.
En attente (5)
En attente : il n’est pas prêt pour le processeur. Lorsqu’il est prêt, il est replanifié.
Transition (6)
Transition : le thread attend des ressources autres que le processeur,
Inconnu (7)
Inconnu : l’état du thread est inconnu.
ThreadWaitReason
-
Type de données : uint32
-
Type d'accès : Lecture seule
-
Qualificateurs : MappingStrings (« Win32API| Motif d’attente du thread »)
Raison pour laquelle le thread est en attente. Cette valeur est valide uniquement si le membre ThreadState est défini sur Transition (6). Les paires d’événements autorisent la communication avec des sous-systèmes protégés.
Exécutif (0)
FreePage (1)
FreePage
PageIn (2)
PoolAllocation (3)
ExecutionDelay (4)
FreePage (5)
PageIn (6)
Exécutif (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)
Inconnu (20)
UserModeTime
-
Type de données : uint64
-
Type d'accès : Lecture seule
-
Qualificateurs : Override (« UserModeTime »), MappingStrings (« Win32API| Structures de données de performances | PERF_OBJECT_TYPE| UserTime »), unités (« 100 nanosecondes »)
Temps en mode utilisateur, en unités de 100 nanosecondes. Si ces informations ne sont pas disponibles, la valeur 0 (zéro) doit être utilisée.
Pour plus d’informations sur l’utilisation de valeurs uint64 dans des scripts, voir Scripts dans WMI.
Notes
La classe Win32_Thread est dérivée de CIM_Thread.
Vue d'ensemble
Pour la surveillance quotidienne de routine, il existe généralement peu de raisons d’avoir une liste détaillée des threads et de leurs propriétés associées. Les ordinateurs créent et suppriment des milliers de threads au cours d’une journée, et quelques-unes de ces créations ou suppressions sont significatives pour quiconque sauf le développeur qui a écrit le logiciel.
Toutefois, lorsque vous résolvez des problèmes avec une application, le suivi des threads individuels d’un processus vous permet d’identifier quand les threads sont créés et quand (ou si) ils sont détruits. Étant donné que les threads créés mais non détruits provoquent des fuites de mémoire, le suivi des threads individuels peut être des informations utiles pour les techniciens du support technique. De même, l’identification des priorités des threads peut aider à identifier les threads qui, en s’exécutant à une priorité anormalement élevée, préemptant les cycles d’UC nécessaires à d’autres threads et d’autres processus.
Utilisation de Win32_Thread
Comme cela est implicite dans le bloc de syntaxe précédent, la classe Win32_Thread ne signale pas le nom du processus sous lequel chaque thread s’exécute. Au lieu de cela, il signale l’ID du processus sous lequel le thread s’exécute. Pour retourner le nom d’un processus et une liste de tous ses threads, votre script doit :
- Connectez-vous à la classe Win32_Process et retournez la liste des processus et leurs ID de processus.
- Stockez temporairement ces informations dans un tableau ou un objet Dictionary.
- Pour chaque ID de processus, retournez la liste des threads pour ce processus, puis affichez le nom du processus et la liste des threads.
Exemples
L’exemple VBScript suivant surveille les threads en cours d’exécution sur un ordinateur.
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
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista |
Serveur minimal pris en charge |
Windows Server 2008 |
Espace de noms |
Racine\CIMV2 |
MOF |
|
DLL |
|
Voir aussi