Compartilhar via


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

Qualificadores: Cim_Key, MaxLen (256)

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:

  1. Conecte-se à classe Win32_Process e retorne a lista de processos e suas IDs de processo.
  2. Armazene temporariamente essas informações em uma matriz ou objeto Dictionary.
  3. 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
CIMWin32.mof
DLL
CIMWin32.dll

Confira também

CIM_Thread

Classes do sistema operacional