Classe Win32_Thread
A classe WMIWin32_Thread representa um thread de execução. Embora um processo precise ter um thread de execução, o processo pode criar outros threads para executar tarefas em paralelo. Os threads compartilham o ambiente de processo, portanto, vários threads no mesmo processo usam menos memória do que o mesmo número de processos.
A sintaxe a seguir é simplificada do código MOF (Managed Object Format) e inclui todas as propriedades herdadas. Propriedades e métodos estão em ordem alfabética, não em ordem MOF.
Sintaxe
[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;
};
Membros
A classe Win32_Thread tem estes tipos de membros:
Propriedades
A classe Win32_Thread tem essas propriedades.
-
Legenda
-
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: MaxLen (64), DisplayName ("Caption")
Breve descrição do objeto.
Essa propriedade é herdada de CIM_ManagedSystemElement.
-
-
CreationClassName
-
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
Nome da primeira classe concreta a ser exibida na cadeia de herança usada na criação de uma instância. Quando usada com as outras propriedades de chave da classe , essa propriedade permite que todas as instâncias dessa classe e suas subclasses sejam identificadas exclusivamente.
Essa propriedade é herdada de CIM_Thread.
-
-
CSCreationClassName
-
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: propagados ("CIM_Process. CSCreationClassName"), Cim_Key, MaxLen (256)
Nome da classe de criação do sistema de computador de escopo.
Essa propriedade é herdada de CIM_Thread.
-
-
CSName
-
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: propagados ("CIM_Process. CSName"), Cim_Key, MaxLen (256)
Nome do sistema de computador de escopo.
Essa propriedade é herdada de CIM_Thread.
-
-
Descrição
-
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: DisplayName ("Description")
Descrição do objeto.
Essa propriedade é herdada de CIM_ManagedSystemElement.
-
-
ElapsedTime
-
-
Tipo de dados: uint64
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("Win32API| Estruturas de dados de desempenho | PERF_OBJECT_TYPE| PerfTime"), Unidades ("milissegundos")
Tempo total de execução, em milissegundos, fornecido a esse thread desde sua criação.
Para obter mais informações sobre como usar valores uint64 em scripts, consulte Scripts no WMI.
-
-
ExecutionState
-
-
Tipo de dados: uint16
-
Tipo de acesso: Somente leitura
Condição operacional atual do thread.
Essa propriedade é herdada de CIM_Thread.
-
-
Desconhecido (0)
-
Outros (1)
-
Pronto (2)
-
Em execução (3)
-
Bloqueado (4)
-
Bloqueado Suspenso (5)
-
Pronto suspenso (6)
Handle
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: MaxLen (256), Override ("Handle"), MappingStrings ("Win32API| Estruturas de Ajuda da Ferramenta | THREADENTRY32|th32ThreadID")
Manipule para um thread. O identificador tem direitos de acesso completos por padrão. Com o acesso de segurança correto, o identificador pode ser usado em qualquer função que aceite um identificador de thread. Dependendo do sinalizador de herança especificado quando ele é criado, esse identificador pode ser herdado por processos filho.
InstallDate
-
Tipo de dados: datetime
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("MIF. DMTF| ComponentID|001.5"), DisplayName ("Data de Instalação")
O objeto foi instalado. Essa propriedade não precisa de um valor para indicar que o objeto está instalado.
Essa propriedade é herdada de CIM_ManagedSystemElement.
KernelModeTime
-
Tipo de dados: uint64
-
Tipo de acesso: Somente leitura
-
Qualificadores: Substituição ("KernelModeTime"), MappingStrings ("Win32API| Estruturas de dados de desempenho | PERF_OBJECT_TYPE| PrivilegedTime"), Unidades ("100 nanossegundos")
Tempo no modo kernel, em 100 unidades de nanossegundos. Se essas informações não estiverem disponíveis, um valor de 0 (zero) deverá ser usado.
Para obter mais informações sobre como usar valores uint64 em scripts, consulte Scripts no WMI.
Nome
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: DisplayName ("Name")
Rótulo pelo qual o objeto é conhecido. Quando subclasse, a propriedade pode ser substituída para ser uma propriedade de chave.
Essa propriedade é herdada de CIM_ManagedSystemElement.
OSCreationClassName
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: propagados ("CIM_Process. OSCreationClassName"), Cim_Key, MaxLen (256)
Nome da classe de criação do sistema operacional de escopo.
Essa propriedade é herdada de CIM_Thread.
OSName
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: Propagados ("CIM_Process. OSName"), Cim_Key, MaxLen (256)
Nome do sistema operacional de escopo.
Essa propriedade é herdada de CIM_Thread.
Prioridade
-
Tipo de dados: uint32
-
Tipo de acesso: Somente leitura
-
Qualificadores: Substituição ("Prioridade"), MappingStrings ("Win32API| Estruturas de Ajuda da Ferramenta| THREADENTRY32|tpDeltaPri")
Prioridade dinâmica do thread. Cada thread tem uma prioridade dinâmica que o agendador usa para determinar qual thread executar. Inicialmente, a prioridade dinâmica de um thread é a mesma que sua prioridade base. O sistema pode aumentar e reduzir a prioridade dinâmica, para garantir que ele seja responsivo (garantindo que nenhum thread esteja faminto pelo tempo do processador). O sistema não aumenta a prioridade dos threads com um nível de prioridade base entre 16 e 31. Somente os threads com prioridade base entre 0 e 15 recebem aumentos de prioridade dinâmica. Números mais altos indicam prioridades mais altas.
PriorityBase
-
Tipo de dados: uint32
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("Win32API| Estruturas de dados de desempenho| PERF_OBJECT_TYPE| PerfPriorityBase")
Prioridade base atual de um thread. O sistema operacional poderá elevar a prioridade dinâmica do thread acima da prioridade base se o thread estiver tratando a entrada do usuário ou reduzi-lo para a prioridade base se o thread se tornar associado à computação. A propriedade PriorityBase pode ter um valor entre 0 e 31.
ProcessCreationClassName
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: Propagados ("CIM_Process. CreationClassName"), Cim_Key, MaxLen (256)
Valor da propriedade CreationClassName do processo de escopo.
Essa propriedade é herdada de CIM_Thread.
ProcessHandle
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: MaxLen (256), Override ("ProcessHandle"), Propagado ("CIM_Process. Handle"), MappingStrings ("Win32API| Estruturas de Ajuda da Ferramenta| THREADENTRY32|th32OwnerProcessID")
Processo que criou o thread. O conteúdo dessa propriedade pode ser usado por elementos da API (interface de programação de aplicativo) do Windows.
Startaddress
-
Tipo de dados: uint32
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("WIn32API| Objeto Thread| LPTHREAD_START_ROUTINE|lpStartAddress")
Endereço inicial do thread. Como qualquer aplicativo com acesso apropriado ao thread pode alterar o contexto do thread, esse valor pode ser apenas uma aproximação do endereço inicial do thread.
Status
-
Tipo de dados: cadeia de caracteres
-
Tipo de acesso: Somente leitura
-
Qualificadores: MaxLen (10), DisplayName ("Status")
Status atual do objeto. Vários status operacionais e não operacionais podem ser definidos. Os status operacionais incluem: "OK", "Degradado" e "Falha de Pred" (um elemento, como uma unidade de disco rígido habilitada para SMART, pode estar funcionando corretamente, mas prevendo uma falha em um futuro próximo). Os status não operacionais incluem: "Erro", "Iniciando", "Parando" e "Serviço". Este último, "Serviço", pode ser aplicado durante espelho resilvering de um disco, recarregamento de uma lista de permissões de usuário ou outro trabalho administrativo. Nem todo esse trabalho está online, mas o elemento gerenciado não é "OK" nem em um dos outros estados.
Essa propriedade é herdada de CIM_ManagedSystemElement.
Os valores são:
OK ("OK")
Erro ("Erro")
Degradado ("Degradado")
Desconhecido ("Desconhecido")
Falha de pred ("Falha de pred")
Iniciando ("Iniciando")
Parando ("Parando")
Serviço ("Serviço")
Estressado ("Estressado")
NonRecover ("NonRecover")
Sem contato ("Sem contato")
Comm Perdido ("Comm Perdido")
Threadstate
-
Tipo de dados: uint32
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("Win32API| Estado do thread")
Estado de execução atual para o thread.
Inicializado (0)
Inicializado — ele é reconhecido pelo microkernel.
Pronto (1)
Pronto — ele está preparado para ser executado no próximo processador disponível.
Em execução (2)
Em execução — ele está em execução.
Espera (3)
Espera – está prestes a ser executado, apenas um thread pode estar nesse estado de cada vez.
Encerrado (4)
Encerrado — Terminou a execução.
Aguardando (5)
Aguardando — Ele não está pronto para o processador, quando estiver pronto, ele será reagendado.
Transição (6)
Transição — o thread está aguardando recursos diferentes do processador,
Desconhecido (7)
Desconhecido — o estado do thread é desconhecido.
ThreadWaitReason
-
Tipo de dados: uint32
-
Tipo de acesso: Somente leitura
-
Qualificadores: MappingStrings ("Win32API| Motivo da espera do thread")
Motivo pelo qual o thread está aguardando. Esse valor só será válido se o membro ThreadState estiver definido como Transição (6). Os pares de eventos permitem a comunicação com subsistemas protegidos.
Executivo (0)
FreePage (1)
FreePage
PageIn (2)
PoolAllocation (3)
ExecutionDelay (4)
FreePage (5)
PageIn (6)
Executivo (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)
Desconhecido (20)
UserModeTime
-
Tipo de dados: uint64
-
Tipo de acesso: Somente leitura
-
Qualificadores: Substituição ("UserModeTime"), MappingStrings ("Win32API| Estruturas de dados de desempenho| PERF_OBJECT_TYPE| UserTime"), Unidades ("100 nanossegundos")
Tempo no modo de usuário, em 100 unidades de nanossegundos. Se essas informações não estiverem disponíveis, um valor igual a 0 (zero) deverá ser usado.
Para obter mais informações sobre como usar valores uint64 em scripts, consulte Scripts no WMI.
Comentários
A classe Win32_Thread é derivada de CIM_Thread.
Visão geral
Para o monitoramento diário de rotina, geralmente há pouco motivo para ter uma lista detalhada de threads e suas propriedades associadas. Os computadores criam e excluem milhares de threads durante um dia, e algumas dessas criações ou exclusões são significativas para qualquer pessoa, exceto para o desenvolvedor que escreveu o software.
No entanto, quando você está solucionando problemas com um aplicativo, acompanhar os threads individuais de um processo permite identificar quando os threads são criados e quando (ou se) eles são destruídos. Como threads criados, mas não destruídos, causam vazamentos de memória, o rastreamento de threads individuais pode ser uma informação útil para técnicos de suporte. Da mesma forma, identificar prioridades de thread pode ajudar a identificar threads que, executando em uma prioridade anormalmente alta, estão preemptando os ciclos de CPU necessários para outros threads e outros processos.
Usando Win32_Thread
Conforme implícito no bloco de sintaxe anterior, a classe Win32_Thread não relata o nome do processo sob o qual cada thread é executado. Em vez disso, ele relata a ID do processo no qual o thread é executado. Para retornar o nome de um processo e uma lista de todos os threads, o script deve:
- Conecte-se à classe Win32_Process e retorne a lista de processos e suas IDs de processo.
- Armazene temporariamente essas informações em uma matriz ou objeto Dictionary.
- Para cada ID do processo, retorne a lista de threads para esse processo e exiba o nome do processo e a lista de threads.
Exemplos
O exemplo VBScript a seguir monitora os threads em execução em um computador.
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 | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista |
Servidor mínimo com suporte |
Windows Server 2008 |
Namespace |
Root\CIMV2 |
MOF |
|
DLL |
|
Confira também