Compartir a través de


Win32_Thread clase

La clase WMI de Win32_Thread representa un subproceso de ejecución. Aunque un proceso debe tener un subproceso de ejecución, el proceso puede crear otros subprocesos para ejecutar tareas en paralelo. Los subprocesos comparten el entorno de proceso, por lo que varios subprocesos en el mismo proceso usan menos memoria que el mismo número de procesos.

La siguiente sintaxis se simplifica desde el código de Managed Object Format (MOF) e incluye todas las propiedades heredadas. Las propiedades y los métodos están en orden alfabético, no en orden MOF.

Sintaxis

[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;
};

Miembros

La clase Win32_Thread tiene estos tipos de miembros:

Propiedades

La clase Win32_Thread tiene estas propiedades.

Caption

Tipo de datos: cadena

Tipo de acceso: solo lectura

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

Descripción breve del objeto.

Esta propiedad se hereda de CIM_ManagedSystemElement.

CreationClassName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: Cim_Key, MaxLen (256)

Nombre de la primera clase concreta que aparece en la cadena de herencia utilizada en la creación de una instancia. Cuando se usa con las demás propiedades clave de la clase , esta propiedad permite identificar todas las instancias de esta clase y sus subclases.

Esta propiedad se hereda de CIM_Thread.

CSCreationClassName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: propagados ("CIM_Process. CSCreationClassName"), Cim_Key, MaxLen (256)

Nombre de clase de creación del sistema de equipo de ámbito.

Esta propiedad se hereda de CIM_Thread.

CSName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: propagados ("CIM_Process. CSName"), Cim_Key, MaxLen (256)

Nombre del sistema informático de ámbito.

Esta propiedad se hereda de CIM_Thread.

Descripción

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: DisplayName ("Descripción")

Descripción del objeto .

Esta propiedad se hereda de CIM_ManagedSystemElement.

ElapsedTime

Tipo de datos: uint64

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("Win32API| Estructuras de datos de rendimiento | PERF_OBJECT_TYPE| PerfTime"), unidades ("milisegundos")

Tiempo total de ejecución, en milisegundos, dado a este subproceso desde su creación.

Para más información sobre el uso de valores uint64 en scripts, vea Scripting in WMI.

ExecutionState

Tipo de datos: uint16

Tipo de acceso: solo lectura

Condición de funcionamiento actual del subproceso.

Esta propiedad se hereda de CIM_Thread.

Desconocido (0)

Otros (1)

Listo (2)

En ejecución (3)

Bloqueado (4)

Suspendido bloqueado (5)

Suspendido listo (6)

Handle

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: MaxLen (256), Override ("Handle"), MappingStrings ("Win32API| Estructuras de ayuda de herramientas | THREADENTRY32|th32ThreadID")

Identificador de un subproceso. El identificador tiene derechos de acceso completos de forma predeterminada. Con el acceso de seguridad correcto, el identificador se puede usar en cualquier función que acepte un identificador de subproceso. Dependiendo de la marca de herencia especificada cuando se crea, los procesos secundarios pueden heredar este identificador.

InstallDate

Tipo de datos: datetime

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("MIF. DMTF| ComponentID|001.5"), DisplayName ("Fecha de instalación")

Se instaló el objeto . Esta propiedad no necesita un valor para indicar que el objeto está instalado.

Esta propiedad se hereda de CIM_ManagedSystemElement.

KernelModeTime

Tipo de datos: uint64

Tipo de acceso: solo lectura

Calificadores: Invalidación ("KernelModeTime"), MappingStrings ("Win32API| Estructuras de datos de rendimiento | PERF_OBJECT_TYPE| PrivilegedTime"), unidades ("100 nanosegundos")

Tiempo en modo kernel, en unidades de 100 nanosegundos. Si esta información no está disponible, se debe usar un valor de 0 (cero).

Para más información sobre el uso de valores uint64 en scripts, vea Scripting in WMI.

Nombre

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: DisplayName ("Name")

Etiqueta por la que se conoce el objeto. Cuando se subclase, la propiedad se puede invalidar para que sea una propiedad de clave.

Esta propiedad se hereda de CIM_ManagedSystemElement.

OSCreationClassName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: propagados ("CIM_Process. OSCreationClassName"), Cim_Key, MaxLen (256)

Nombre de clase de creación del sistema operativo de ámbito.

Esta propiedad se hereda de CIM_Thread.

OSName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: propagados ("CIM_Process. OSName"), Cim_Key, MaxLen (256)

Nombre del sistema operativo de ámbito.

Esta propiedad se hereda de CIM_Thread.

Prioridad

Tipo de datos: uint32

Tipo de acceso: solo lectura

Calificadores: Invalidación ("Prioridad"), MappingStrings ("Win32API| Estructuras de ayuda de herramientas | THREADENTRY32|tpDeltaPri")

Prioridad dinámica del subproceso. Cada subproceso tiene una prioridad dinámica que el programador usa para determinar qué subproceso se va a ejecutar. Inicialmente, la prioridad dinámica de un subproceso es la misma que su prioridad base. El sistema puede aumentar y reducir la prioridad dinámica para asegurarse de que responde (lo que garantiza que no hay subprocesos agotados para el tiempo del procesador). El sistema no aumenta la prioridad de los subprocesos con un nivel de prioridad base entre 16 y 31. Solo los subprocesos con una prioridad base entre 0 y 15 reciben aumentos de prioridad dinámica. Los números más altos indican prioridades más altas.

PriorityBase

Tipo de datos: uint32

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("Win32API| Estructuras de datos de rendimiento | PERF_OBJECT_TYPE| PerfPriorityBase")

Prioridad base actual de un subproceso. El sistema operativo puede elevar la prioridad dinámica del subproceso por encima de la prioridad base si el subproceso controla la entrada del usuario o lo reduce hacia la prioridad base si el subproceso se convierte en enlazado al proceso. La propiedad PriorityBase puede tener un valor entre 0 y 31.

ProcessCreationClassName

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: propagados ("CIM_Process. CreationClassName"), Cim_Key, MaxLen (256)

Valor de la propiedad CreationClassName del proceso de ámbito.

Esta propiedad se hereda de CIM_Thread.

ProcessHandle

Tipo de datos: cadena

Tipo de acceso: solo lectura

Calificadores: MaxLen (256), Invalidación ("ProcessHandle"), Propagado ("CIM_Process. Handle"), MappingStrings ("Win32API| Estructuras de ayuda de herramientas | THREADENTRY32|th32OwnerProcessID")

Proceso que creó el subproceso. Los elementos de la interfaz de programación de aplicaciones (API) de Windows pueden usar el contenido de esta propiedad.

StartAddress

Tipo de datos: uint32

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("WIn32API| Thread (objeto) | LPTHREAD_START_ROUTINE|lpStartAddress")

Dirección inicial del subproceso. Dado que cualquier aplicación con acceso adecuado al subproceso puede cambiar el contexto del subproceso, este valor solo puede ser una aproximación de la dirección inicial del subproceso.

Estado

Tipo de datos: cadena

Tipo de acceso: solo lectura

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

Estado actual del objeto. Se pueden definir varios estados operativos y no operativos. Los estados operativos incluyen: "Ok", "Degradado" y "Pred Fail" (un elemento, como una unidad de disco duro habilitada para SMART, puede funcionar correctamente, pero predecir un error en un futuro próximo). Los estados no operativos incluyen: "Error", "Starting", "Stopping" y "Service". Este último, "Servicio", podría aplicarse durante la reestablecimiento de reflejo de un disco, la recarga de una lista de permisos de usuario u otro trabajo administrativo. No todo este trabajo está en línea, pero el elemento administrado no es "CORRECTO" ni en uno de los otros estados.

Esta propiedad se hereda de CIM_ManagedSystemElement.

Los valores son:

Ok ("OK")

Error ("Error")

Degradado ("Degradado")

Desconocido ("Desconocido")

Pred Fail ("Pred Fail ")

Inicio ("Inicio")

Detención ("Detención ")

Servicio ("Servicio")

Estresado ("Estresado")

NonRecover ("NonRecover")

Sin contacto ("Sin contacto")

Lost Comm ("Lost Comm")

ThreadState

Tipo de datos: uint32

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("Win32API| Estado del subproceso")

Estado de ejecución actual del subproceso.

Inicializado (0)

Inicializado: es reconocido por el microkernel.

Listo (1)

Listo: está preparado para ejecutarse en el siguiente procesador disponible.

En ejecución (2)

En ejecución: se está ejecutando.

En espera (3)

En espera: está a punto de ejecutarse, solo un subproceso puede estar en este estado a la vez.

Finalizado (4)

Finalizado: termina de ejecutarse.

Esperando (5)

En espera: no está listo para el procesador, cuando esté listo, se volverá a programar.

Transición (6)

Transición: el subproceso está esperando recursos distintos del procesador,

Desconocido (7)

Desconocido: el estado del subproceso es desconocido.

ThreadWaitReason

Tipo de datos: uint32

Tipo de acceso: solo lectura

Calificadores: MappingStrings ("Win32API| Motivo de espera del subproceso")

Motivo por el que el subproceso está esperando. Este valor solo es válido si el miembro ThreadState está establecido en Transition (6). Los pares de eventos permiten la comunicación con subsistemas protegidos.

Ejecutivo (0)

FreePage (1)

FreePage

PageIn (2)

PoolAllocation (3)

ExecutionDelay (4)

FreePage (5)

PageIn (6)

Ejecutivo (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)

Desconocido (20)

UserModeTime

Tipo de datos: uint64

Tipo de acceso: solo lectura

Calificadores: Override ("UserModeTime"), MappingStrings ("Win32API| Estructuras de datos de rendimiento | PERF_OBJECT_TYPE| UserTime"), unidades ("100 nanosegundos")

Tiempo en modo de usuario, en 100 unidades de nanosegundos. Si esta información no está disponible, se debe usar un valor de 0 (cero).

Para más información sobre el uso de valores uint64 en scripts, vea Scripting in WMI.

Comentarios

La clase Win32_Thread se deriva de CIM_Thread.

Información general

Para la supervisión diaria rutinaria, normalmente hay poca razón para tener una lista detallada de subprocesos y sus propiedades asociadas. Los equipos crean y eliminan miles de subprocesos durante el transcurso de un día, y algunas de estas creaciones o eliminaciones son significativas para cualquier persona, pero el desarrollador que escribió el software.

Sin embargo, cuando se solucionan problemas con una aplicación, el seguimiento de los subprocesos individuales de un proceso le permite identificar cuándo se crean subprocesos y cuándo (o si) se destruyen. Dado que los subprocesos creados pero no destruidos provocan pérdidas de memoria, el seguimiento de subprocesos individuales puede ser información útil para los técnicos de soporte técnico. Del mismo modo, la identificación de prioridades de subprocesos puede ayudar a identificar los subprocesos que, mediante la ejecución de una prioridad anómala alta, están adelantando los ciclos de CPU necesarios para otros subprocesos y otros procesos.

Uso de Win32_Thread

Como se indica en el bloque de sintaxis anterior, la clase Win32_Thread no notifica el nombre del proceso en el que se ejecuta cada subproceso. En su lugar, notifica el identificador del proceso en el que se ejecuta el subproceso. Para devolver el nombre de un proceso y una lista de todos sus subprocesos, el script debe:

  1. Conéctese a la clase Win32_Process y devuelva la lista de procesos y sus identificadores de proceso.
  2. Almacene temporalmente esta información en una matriz o un objeto Dictionary.
  3. Para cada identificador de proceso, devuelve la lista de subprocesos de ese proceso y, a continuación, muestra el nombre del proceso y la lista de subprocesos.

Ejemplos

En el ejemplo de VBScript siguiente se supervisan los subprocesos que se ejecutan en un equipo.

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

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Espacio de nombres
Root\CIMV2
MOF
CIMWin32.mof
Archivo DLL
CIMWin32.dll

Consulte también

CIM_Thread

Clases de sistema operativo