共用方式為


Win32_Thread 類別

Win32_ThreadWMI 類別代表執行的執行緒。 雖然進程必須有一個執行緒執行,但進程可以建立其他執行緒以平行方式執行工作。 執行緒會共用進程環境,因此相同進程下的多個執行緒使用比相同數目的進程少。

下列語法已經過受管理物件格式 (MOF) 程式碼簡化,並包含所有已繼承的屬性。 屬性和方法依字母順序排列,而非 MOF 順序。

語法

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

成員

Win32_Thread類別具有下列類型的成員:

屬性

Win32_Thread類別具有這些屬性。

標題

資料類型: 字串

存取類型:唯讀

限定詞: MaxLen (64) 、 DisplayName (「Caption」)

物件的簡短描述。

此屬性繼承自 CIM_ManagedSystemElement

CreationClassName

資料類型: 字串

存取類型:唯讀

限定詞: Cim_KeyMaxLen (256)

要出現在建立實例時所使用繼承鏈結中之第一個具體類別的名稱。 與 類別的其他索引鍵屬性搭配使用時,這個屬性可讓這個類別及其子類別的所有實例唯一識別。

此屬性繼承自 CIM_Thread

CSCreationClassName

資料類型: 字串

存取類型:唯讀

限定詞: 傳播 (「CIM_ProcessCSCreationClassName「) , Cim_KeyMaxLen (256)

建立範圍電腦系統的類別名稱。

此屬性繼承自 CIM_Thread

CSName

資料類型: 字串

存取類型:唯讀

限定詞: 傳播 (「CIM_ProcessCSName「) , Cim_KeyMaxLen (256)

範圍電腦系統的名稱。

此屬性繼承自 CIM_Thread

說明

資料類型: 字串

存取類型:唯讀

限定詞: DisplayName (「Description」)

物件的描述。

此屬性繼承自 CIM_ManagedSystemElement

ElapsedTime

資料類型: uint64

存取類型:唯讀

限定詞: MappingStrings (「Win32API|效能資料結構 |PERF_OBJECT_TYPE|PerfTime「) , Units (」毫秒「)

在建立此執行緒之後,授與此執行緒的總執行時間,以毫秒為單位。

如需在腳本中使用 uint64 值的詳細資訊,請參閱 WMI 中的腳本

ExecutionState

資料類型: uint16

存取類型:唯讀

執行緒的目前作業條件。

此屬性繼承自 CIM_Thread

未知 (0)

其他 (1)

就緒 (2)

執行 (3)

封鎖 (4)

暫停封鎖 (5)

暫止就緒 (6)

Handle

資料類型: 字串

存取類型:唯讀

限定詞: MaxLen (256) 、 覆寫 (「Handle」) 、 MappingStrings (「Win32API|工具說明結構 |THREADENTRY32|th32ThreadID「)

執行緒的控制碼。 控制碼預設具有完整存取權限。 透過正確的安全性存取,控制碼可以在接受執行緒控制碼的任何函式中使用。 視建立時指定的繼承旗標而定,子進程可以繼承此控制碼。

InstallDate

資料類型: datetime

存取類型:唯讀

限定詞: MappingStrings (「MIF。DMTF|ComponentID|001.5「) , DisplayName (」Install Date「)

已安裝 物件。 這個屬性不需要值來指出已安裝物件。

此屬性繼承自 CIM_ManagedSystemElement

KernelModeTime

資料類型: uint64

存取類型:唯讀

限定詞: 覆寫 (「KernelModeTime」) , MappingStrings (「Win32API|效能資料結構 |PERF_OBJECT_TYPE|PrivilegedTime「) , Units (」100 nanoseconds「)

核心模式的時間,以 100 奈秒為單位。 如果無法使用這項資訊,則應該使用值為 0 (零) 。

如需在腳本中使用 uint64 值的詳細資訊,請參閱 WMI 中的腳本

名稱

資料類型: 字串

存取類型:唯讀

限定詞: DisplayName (「Name」)

已知物件的標籤。 當子類別化時,屬性可以覆寫為索引鍵屬性。

此屬性繼承自 CIM_ManagedSystemElement

OSCreationClassName

資料類型: 字串

存取類型:唯讀

限定詞: 傳播 (「CIM_ProcessOSCreationClassName「) 、 Cim_KeyMaxLen (256)

建立範圍作業系統的類別名稱。

此屬性繼承自 CIM_Thread

OSName

資料類型: 字串

存取類型:唯讀

限定詞: 傳播 (「CIM_ProcessOSName「) 、 Cim_KeyMaxLen (256)

範圍作業系統的名稱。

此屬性繼承自 CIM_Thread

優先順序

資料類型: uint32

存取類型:唯讀

限定詞: 覆寫 (「Priority」) , MappingStrings (「Win32API|工具說明結構 |THREADENTRY32|tpDeltaPri「)

執行緒的動態優先順序。 每個執行緒都有動態優先順序,排程器會用來判斷要執行的執行緒。 一開始,執行緒的動態優先順序與其基底優先順序相同。 系統可以提高和降低動態優先順序,以確保其回應性 (保證處理器時間不會耗盡任何執行緒) 。 系統不會提升優先順序層級介於 16 到 31 之間的執行緒優先順序。 只有基底優先順序介於 0 到 15 之間的執行緒會收到動態優先權提升。 較高的數位表示較高的優先順序。

PriorityBase

資料類型: uint32

存取類型:唯讀

限定詞: MappingStrings (「Win32API|效能資料結構 |PERF_OBJECT_TYPE|PerfPriorityBase「)

執行緒的目前基底優先順序。 如果執行緒正在處理使用者輸入,則作業系統可能會提高執行緒在基底優先順序上方的動態優先順序,或線上程變成計算系結時,將它降低至基底優先順序。 PriorityBase屬性可以有介於 0 到 31 之間的值。

ProcessCreationClassName

資料類型: 字串

存取類型:唯讀

限定詞: 傳播 (「CIM_ProcessCreationClassName「) , Cim_KeyMaxLen (256)

範圍處理 CreationClassName 屬性的值。

此屬性繼承自 CIM_Thread

ProcessHandle

資料類型: 字串

存取類型:唯讀

限定詞: MaxLen (256) 、 覆寫 (「ProcessHandle」) 、 傳播 (「CIM_ProcessHandle「) , MappingStrings (」Win32API|工具說明結構 |THREADENTRY32|th32OwnerProcessID「)

建立執行緒的進程。 Windows 應用程式程式設計介面可以使用此屬性的內容 (API) 元素。

StartAddress

資料類型: uint32

存取類型:唯讀

限定詞: MappingStrings (「WIn32API|Thread 物件|LPTHREAD_START_ROUTINE|lpStartAddress「)

執行緒的起始位址。 因為任何具有適當執行緒存取權的應用程式都可以變更執行緒的內容,所以此值可能只是執行緒起始位址的近似值。

狀態

資料類型: 字串

存取類型:唯讀

限定詞: MaxLen (10) 、 DisplayName (「Status」)

物件的目前狀態。 您可以定義各種操作和非操作狀態。 作業狀態包括:「確定」、「降級」和「預先失敗」 (啟用智慧型硬碟等元素,可能會正常運作,但預測近期的失敗) 。 非操作狀態包括:「Error」、「Starting」、「Stopping」 和 「Service」。 後者的「服務」可能會在磁片的鏡像重新儲存期間套用、重載使用者權限清單或其他系統管理工作。 並非所有這類工作都已上線,但 Managed 元素既不是「確定」,也不是在其他其中一種狀態中。

此屬性繼承自 CIM_ManagedSystemElement

值如下:

確定 (「確定」)

錯誤 (「錯誤」)

降級 (「降級」)

未知 (「未知」)

Pred Fail (「預先失敗」)

starting (「Starting」)

停止 (「停止」)

服務 (「Service」)

壓力 (「壓力」)

NonRecover (「NonRecover」)

無連絡人 (「無連絡人」)

Lost Comm (「Lost Comm」)

ThreadState

資料類型: uint32

存取類型:唯讀

限定詞: MappingStrings (「Win32API|執行緒狀態「)

執行緒的目前執行狀態。

初始化 (0)

初始化 - 微程式可辨識它。

就緒 (1)

就緒 - 它已準備好在下一個可用的處理器上執行。

執行 (2)

執行 — 正在執行。

待命 (3)

待命 - 即將執行,一次只能有一個執行緒處於此狀態。

終止 (4)

已終止 — 已完成執行。

等候 (5)

等候 - 它尚未準備好供處理器使用,當準備好時,將會重新排程。

轉換 (6)

轉換 — 執行緒正在等候處理器以外的資源。

未知 (7)

未知 - 執行緒狀態不明。

ThreadWaitReason

資料類型: uint32

存取類型:唯讀

限定詞: MappingStrings (「Win32API|執行緒等候原因「)

執行緒正在等候的原因。 只有在 ThreadState 成員設定為 [轉換] (6) 時,這個值才有效。 事件配對允許與受保護的子系統通訊。

主管 (0)

FreePage (1)

FreePage

PageIn (2)

PoolAllocation (3)

ExecutionDelay (4)

FreePage (5)

PageIn (6)

主管 (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)

未知 (20)

UserModeTime

資料類型: uint64

存取類型:唯讀

限定詞: 覆寫 (「UserModeTime」) , MappingStrings (「Win32API|效能資料結構 |PERF_OBJECT_TYPE|UserTime「) , Units (」100 nanoseconds「)

使用者模式的時間,以 100 奈秒為單位。 如果無法使用這項資訊,應該使用 0 (零) 值。

如需在腳本中使用 uint64 值的詳細資訊,請參閱 WMI 中的腳本

備註

Win32_Thread類別衍生自CIM_Thread

概觀

對於例行監視,通常沒有理由擁有詳細的執行緒清單及其相關聯的屬性。 電腦會在一天期間建立和刪除數千個執行緒,而這些建立或刪除的其中一些對撰寫軟體的開發人員而言都有意義。

不過,當您針對應用程式的問題進行疑難排解時,追蹤進程的個別執行緒可讓您識別何時建立執行緒,以及何時 (或) 終結執行緒。 由於已建立但未終結的執行緒會導致記憶體流失,因此追蹤個別執行緒對於支援技術人員而言可能很有用。 同樣地,識別執行緒優先順序有助於找出執行緒,方法是以異常高優先順序執行,會先占其他執行緒和其他進程所需的 CPU 週期。

使用 Win32_Thread

如上述語法區塊所隱含, Win32_Thread 類別不會報告每個執行緒執行所在的進程名稱。 相反地,它會報告執行緒執行所在進程的識別碼。 若要傳回進程的名稱及其所有線程的清單,您的腳本必須:

  1. 連接到 Win32_Process 類別 並傳回進程及其進程識別碼的清單。
  2. 暫時將這項資訊儲存在陣列或 Dictionary 物件中。
  3. 針對每個進程識別碼,傳回該進程的執行緒清單,然後顯示進程名稱和執行緒清單。

範例

下列 VBScript 範例會監視電腦上執行的執行緒。

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

規格需求

需求
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008
命名空間
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另請參閱

CIM_Thread

作業系統類別