Win32_Thread 클래스
Win32_ThreadWMI 클래스는 실행 스레드를 나타냅니다. 프로세스에는 하나의 실행 스레드가 있어야 하지만 프로세스는 태스크를 병렬로 실행하는 다른 스레드를 만들 수 있습니다. 스레드는 프로세스 환경을 공유하므로 동일한 프로세스의 여러 스레드는 동일한 프로세스 수보다 적은 메모리를 사용합니다.
다음 구문은 MOF(Managed Object Format) 코드를 단순화한 것으로 상속된 속성이 모두 포함되어 있습니다. 속성 및 메서드는 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 클래스에는 이러한 속성이 있습니다.
-
캡션
-
-
데이터 형식: string
-
액세스 형식: 읽기 전용
-
한정자: MaxLen (64), DisplayName ("Caption")
개체에 대한 간단한 설명입니다.
이 속성은 CIM_ManagedSystemElement 상속됩니다.
-
-
CreationClassName
-
instance 만드는 데 사용되는 상속 체인에 표시할 첫 번째 구체적인 클래스의 이름입니다. 클래스의 다른 키 속성과 함께 사용할 경우 이 속성을 사용하면 이 클래스의 모든 인스턴스와 해당 하위 클래스를 고유하게 식별할 수 있습니다.
이 속성은 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"), 단위 ("밀리초")
생성 이후 이 스레드에 지정된 총 실행 시간(밀리초)입니다.
스크립트에서 uint64 값을 사용하는 방법에 대한 자세한 내용은 WMI 스크립트 만들기를 참조하세요.
-
-
ExecutionState
-
-
데이터 형식: uint16
-
액세스 형식: 읽기 전용
스레드의 현재 작동 조건입니다.
이 속성은 CIM_Thread 상속됩니다.
-
-
알 수 없음 (0)
-
기타 (1)
-
준비 완료 (2)
-
실행 중 (3)
-
차단됨 (4)
-
일시 중단됨( 5)
-
일시 중단된 준비( 6)
Handle
-
데이터 형식: 문자열
-
액세스 형식: 읽기 전용
-
한정자: MaxLen (256), 재정의 ("핸들"), MappingStrings ("Win32API| 도구 도움말 구조| THREADENTRY32|th32ThreadID")
스레드에 대한 핸들입니다. 핸들에는 기본적으로 모든 액세스 권한이 있습니다. 올바른 보안 액세스를 사용하면 스레드 핸들을 허용하는 모든 함수에서 핸들을 사용할 수 있습니다. 이 핸들을 만들 때 지정된 상속 플래그에 따라 자식 프로세스에서 이 핸들을 상속할 수 있습니다.
InstallDate
-
데이터 형식: datetime
-
액세스 형식: 읽기 전용
-
한정자: MappingStrings ("MIF. DMTF| ComponentID|001.5"), DisplayName ("설치 날짜")
개체가 설치되었습니다. 이 속성은 개체가 설치되었음을 나타내는 값이 필요하지 않습니다.
이 속성은 CIM_ManagedSystemElement 상속됩니다.
KernelModeTime
-
데이터 형식: uint64
-
액세스 형식: 읽기 전용
-
한정자: 재정의 ("KernelModeTime"), MappingStrings ("Win32API| 성능 데이터 구조| PERF_OBJECT_TYPE| PrivilegedTime"), 단위 ("100나노초")
커널 모드의 시간(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
-
액세스 형식: 읽기 전용
-
한정자: 재정 의("우선 순위"), 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 ("상태")
개체의 현재 상태. 다양한 운영 및 비옵터레이션 상태를 정의할 수 있습니다. 작동 상태에는 "OK", "Degraded", "Pred Fail"(SMART 지원 하드 디스크 드라이브와 같은 요소가 제대로 작동할 수 있지만 가까운 장래에 오류를 예측할 수 있음)가 포함됩니다. 비 운용성 상태에는 "오류", "시작 중", "중지" 및 "서비스"가 포함됩니다. 후자의 "서비스"는 디스크를 다시 미러 사용자 권한 목록 또는 기타 관리 작업 중에 적용할 수 있습니다. 이러한 모든 작업이 온라인 상태인 것은 아니지만 관리되는 요소는 "OK"도 아니고 다른 상태 중 하나도 아닙니다.
이 속성은 CIM_ManagedSystemElement 상속됩니다.
값은 다음과 같습니다.
확인 ("확인")
오류 ("오류")
저하됨 ("성능 저하")
알 수 없음 ("알 수 없음")
Pred Fail ("Pred Fail")
시작 ("시작")
중지 ("중지")
서비스 ("서비스")
스트레스( "스트레스")
NonRecover ("NonRecover")
연락처 없음 ("연락처 없음")
Lost Comm ("Lost Comm")
ThreadState
-
데이터 형식: uint32
-
액세스 형식: 읽기 전용
-
한정자: MappingStrings ("Win32API| 스레드 상태")
스레드의 현재 실행 상태입니다.
초기화됨 (0)
초기화됨 - 마이크로커널에서 인식됩니다.
준비 완료 (1)
준비 — 사용 가능한 다음 프로세서에서 실행할 준비가 된 것입니다.
실행 중 (2)
실행 중 — 실행 중입니다.
대기 (3)
대기 - 실행하려고 하며 한 번에 하나의 스레드만 이 상태에 있을 수 있습니다.
종료됨 (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"), 단위 ("100나노초")
사용자 모드의 시간(100나노초 단위)입니다. 이 정보를 사용할 수 없는 경우 값 0을 사용해야 합니다.
스크립트에서 uint64 값을 사용하는 방법에 대한 자세한 내용은 WMI 스크립트 만들기를 참조하세요.
설명
Win32_Thread 클래스는 CIM_Thread 파생됩니다.
개요
일상적인 일상적인 모니터링의 경우 일반적으로 스레드 및 관련 속성의 자세한 목록을 포함할 이유가 거의 없습니다. 컴퓨터는 하루 동안 수천 개의 스레드를 만들고 삭제하며, 이러한 생성 또는 삭제 중 일부는 소프트웨어를 작성한 개발자를 제외한 모든 사용자에게 의미가 있습니다.
그러나 애플리케이션 문제를 해결할 때 프로세스에 대한 개별 스레드를 추적하면 스레드가 생성되는 시기와 스레드가 제거되는 시기(또는 그 경우)를 식별할 수 있습니다. 생성되었지만 제거되지 않은 스레드는 메모리 누수의 원인이 되기 때문에 개별 스레드를 추적하는 것은 지원 기술자에게 유용한 정보가 될 수 있습니다. 마찬가지로 스레드 우선 순위를 식별하면 비정상적으로 높은 우선 순위로 실행하여 다른 스레드 및 기타 프로세스에 필요한 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 |
|
추가 정보