Partager via


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

Type de données : chaîne

Type d'accès : Lecture seule

Qualificateurs : Cim_Key, MaxLen (256)

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 :

  1. Connectez-vous à la classe Win32_Process et retournez la liste des processus et leurs ID de processus.
  2. Stockez temporairement ces informations dans un tableau ou un objet Dictionary.
  3. 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
CIMWin32.mof
DLL
CIMWin32.dll

Voir aussi

CIM_Thread

Classes du système d’exploitation