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_Thread。
-
CSCreationClassName
-
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 傳播 (「CIM_Process。CSCreationClassName「) , Cim_Key, MaxLen (256)
建立範圍電腦系統的類別名稱。
此屬性繼承自 CIM_Thread。
-
-
CSName
-
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 傳播 (「CIM_Process。CSName「) , Cim_Key, MaxLen (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_Process。OSCreationClassName「) 、 Cim_Key、 MaxLen (256)
建立範圍作業系統的類別名稱。
此屬性繼承自 CIM_Thread。
OSName
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 傳播 (「CIM_Process。OSName「) 、 Cim_Key、 MaxLen (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_Process。CreationClassName「) , Cim_Key, MaxLen (256)
範圍處理 CreationClassName 屬性的值。
此屬性繼承自 CIM_Thread。
ProcessHandle
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: MaxLen (256) 、 覆寫 (「ProcessHandle」) 、 傳播 (「CIM_Process。Handle「) , 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 類別不會報告每個執行緒執行所在的進程名稱。 相反地,它會報告執行緒執行所在進程的識別碼。 若要傳回進程的名稱及其所有線程的清單,您的腳本必須:
- 連接到 Win32_Process 類別 , 並傳回進程及其進程識別碼的清單。
- 暫時將這項資訊儲存在陣列或 Dictionary 物件中。
- 針對每個進程識別碼,傳回該進程的執行緒清單,然後顯示進程名稱和執行緒清單。
範例
下列 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 |
|
DLL |
|
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應