Win32_Thread クラス
Win32_ThreadWMI クラスは、実行スレッドを表します。 プロセスには 1 つの実行スレッドが必要ですが、プロセスはタスクを並列で実行する他のスレッドを作成できます。 スレッドはプロセス環境を共有するため、同じプロセスの下の複数のスレッドは、同じ数のプロセスよりも少ないメモリを使用します。
次の構文はマネージド オブジェクト フォーマット (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 クラスには、これらのプロパティがあります。
-
Caption
-
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: MaxLen (64)、 DisplayName ("Caption")
オブジェクトの簡単な説明。
このプロパティは 、CIM_ManagedSystemElementから継承されます。
-
-
CreationClassName
-
インスタンスの作成で使用される継承チェーンに表示される最初の具象クラスの名前。 クラスの他のキー プロパティと共に使用すると、このプロパティを使用すると、このクラスとそのサブクラスのすべてのインスタンスを一意に識別できます。
このプロパティは 、CIM_Threadから継承されます。
-
CSCreationClassName
-
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 伝達 ( "CIM_Process。CSCreationClassName"), Cim_Key, MaxLen (256)
スコープ コンピューター システムの作成クラス名。
このプロパティは 、CIM_Threadから継承されます。
-
-
CSName
-
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 伝達 ( "CIM_Process。CSName")、 Cim_Key、 MaxLen (256)
スコープ コンピューター システムの名前。
このプロパティは 、CIM_Threadから継承されます。
-
-
説明
-
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 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
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: MaxLen (256)、 オーバーライド ("Handle")、 MappingStrings ("Win32API|ツール ヘルプ構造|THREADENTRY32|th32ThreadID")
スレッドへのハンドル。 既定では、ハンドルにはフル アクセス権があります。 適切なセキュリティ アクセスを使用すると、スレッド ハンドルを受け入れる任意の関数でハンドルを使用できます。 作成時に指定された継承フラグに応じて、このハンドルは子プロセスによって継承できます。
InstallDate
-
データ型: datetime
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("MIF.DMTF|ComponentID|001.5"), DisplayName ("インストール日")
オブジェクトがインストールされました。 このプロパティには、オブジェクトがインストールされていることを示す値は必要ありません。
このプロパティは 、CIM_ManagedSystemElementから継承されます。
KernelModeTime
-
データ型: uint64
-
アクセスの種類: 読み取り専用
-
修飾子: オーバーライド ("KernelModeTime")、 MappingStrings ("Win32API|パフォーマンス データ構造|PERF_OBJECT_TYPE|PrivilegedTime")、 Units ("100 nanoseconds")
カーネル モードの時間 (100 ナノ秒単位)。 この情報を使用できない場合は、値 0 (ゼロ) を使用する必要があります。
スクリプトでの uint64 値の使用の詳細については、「 WMI でのスクリプト作成」を参照してください。
Name
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: DisplayName ("Name")
オブジェクトが認識されるラベル。 サブクラス化すると、プロパティをキー プロパティとしてオーバーライドできます。
このプロパティは 、CIM_ManagedSystemElementから継承されます。
OSCreationClassName
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 伝達 ( "CIM_Process。OSCreationClassName")、 Cim_Key、 MaxLen (256)
スコープ オペレーティング システムの作成クラス名。
このプロパティは 、CIM_Threadから継承されます。
OSName
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 伝達 ( "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
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 伝達 ( "CIM_Process。CreationClassName")、 Cim_Key、 MaxLen (256)
スコープ プロセスの CreationClassName プロパティの値。
このプロパティは、 CIM_Threadから継承されます。
ProcessHandle
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: MaxLen (256)、 オーバーライド ("ProcessHandle")、 伝達 ( "CIM_Process。Handle") 、MappingStrings ("Win32API|ツール ヘルプの構造|THREADENTRY32|th32OwnerProcessID")
スレッドを作成したプロセス。 このプロパティの内容は、Windows アプリケーション プログラミング インターフェイス (API) 要素で使用できます。
StartAddress
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("WIn32API|Thread オブジェクト|LPTHREAD_START_ROUTINE|lpStartAddress")
スレッドの開始アドレス。 スレッドへの適切なアクセス権を持つアプリケーションはスレッドのコンテキストを変更できるため、この値はスレッドの開始アドレスの近似値に過ぎません。
状態
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: MaxLen (10)、 DisplayName ("Status")
オブジェクトの現在の状態。 さまざまな操作状態と非操作状態を定義できます。 運用状態には、"OK"、"低下"、"事前失敗" (SMART 対応ハード ディスク ドライブなどの要素が正常に機能している可能性がありますが、近い将来に障害が予測される可能性があります) が含まれます。 非運用状態には、"Error"、"Starting"、"Stopping"、および "Service" が含まれます。 後者の "サービス" は、ディスクのミラー再チェックイン、ユーザーアクセス許可リストの再読み込み、またはその他の管理作業中に適用される可能性があります。 このような作業のすべてがオンラインであるわけではありませんが、マネージド要素は "OK" でも、他の状態の 1 つでもありません。
このプロパティは、 CIM_ManagedSystemElementから継承されます。
値は次のとおりです。
OK ("OK")
エラー ("Error")
機能低下 ("Degraded")
不明 ("不明")
Pred Fail ("Pred Fail")
開始 ("開始")
停止中 ("停止中")
サービス ("Service")
ストレス ( "ストレス")
NonRecover ("NonRecover")
連絡先なし ("連絡先なし")
Lost Comm ("Lost Comm")
Threadstate
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|スレッドの状態")
スレッドの現在の実行状態。
初期化済み (0)
初期化済み — マイクロカーネルによって認識されます。
準備完了 (1)
Ready — 次に使用可能なプロセッサで実行する準備が整います。
実行中 (2)
実行中 — 実行中です。
スタンバイ (3)
スタンバイ - 実行が間に合います。この状態のスレッドは一度に 1 つだけです。
終了 ( 4)
終了 — 実行が完了しました。
待機中 (5)
待機中 — プロセッサの準備ができていません。準備ができたら、再スケジュールされます。
切り替え (6)
切り替え — スレッドはプロセッサ以外のリソースを待機しています。
不明 (7)
不明 — スレッドの状態が不明です。
ThreadWaitReason
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|スレッド待機理由")
スレッドが待機している理由。 この値は、 ThreadState メンバーが Transition (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から派生します。
概要
日常的な日常的な監視では、通常、スレッドとその関連プロパティの詳細なリストを持つ理由はほとんどありません。 コンピューターは 1 日の間に何千ものスレッドを作成および削除します。これらの作成または削除の一部は、ソフトウェアを作成した開発者以外のユーザーにとって意味があります。
ただし、アプリケーションに関する問題をトラブルシューティングする場合は、プロセスの個々のスレッドを追跡することで、スレッドがいつ作成され、いつ (または破棄されるか) を特定できます。 作成されたが破棄されないスレッドはメモリ リークを引き起こすので、個々のスレッドの追跡はサポート技術者にとって役立つ情報になる可能性があります。 同様に、スレッドの優先順位を特定すると、異常に高い優先度で実行することで、他のスレッドや他のプロセスが必要とする CPU サイクルを優先しているスレッドを特定するのに役立ちます。
Win32_Threadの使用
前述の構文ブロックに示されているように、 Win32_Thread クラスは、各スレッドが実行されるプロセスの名前を報告しません。 代わりに、スレッドが実行されているプロセスの ID を報告します。 プロセスの名前とそのすべてのスレッドの一覧を返すには、スクリプトで次の操作を行う必要があります。
- Win32_Process クラスに接続し、プロセスとそのプロセス ID の一覧を返します。
- この情報を配列または Dictionary オブジェクトに一時的に格納します。
- プロセス ID ごとに、そのプロセスのスレッドの一覧を返し、プロセス名とスレッドの一覧を表示します。
例
次の 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] |
|
こちらもご覧ください