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
-
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:
- Conéctese a la clase Win32_Process y devuelva la lista de procesos y sus identificadores de proceso.
- Almacene temporalmente esta información en una matriz o un objeto Dictionary.
- 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 |
|
Archivo DLL |
|
Consulte también