다음을 통해 공유


WdbgExts 스레드 및 프로세스

이 항목에서는 WdbgExts API를 사용하여 스레드 및 프로세스를 조작하는 방법에 대한 간략한 개요를 제공합니다. 디버거 엔진의 스레드 및 프로세스에 대한 개요는 이 설명서의 디버거 엔진 개요 섹션의 스레드 및 프로세스를 참조하세요.

스레드

현재 스레드를 설명하는 TEB(스레드 환경 블록)의 주소를 얻으려면 GetTebAddress 메서드를 사용합니다. 커널 모드 디버깅에서는 KTHREAD 구조체를 사용하여 스레드를 설명할 수도 있습니다. 이 구조체는 GetCurrentThreadAddr 에서 반환됩니다(사용자 모드 디버깅에서는 GetCurrentThreadAddr 이 TEB의 주소를 반환함).

스레드 컨텍스트는 스레드를 전환할 때 Windows에서 유지되는 상태입니다. CONTEXT 구조체로 표시됩니다. 이 구조는 운영 체제 및 플랫폼에 따라 다르며 CONTEXT 구조를 사용할 때 주의해야 합니다. 스레드 컨텍스트는 GetContext 함수에서 반환되며 SetContext 함수를 사용하여 설정할 수 있습니다.

현재 스레드에 대한 스택 추적을 검사하려면 StackTrace 함수를 사용합니다. 스택 추적을 검사하는 데 사용되는 스레드를 일시적으로 변경하려면 SetThreadForOperation 또는 SetThreadForOperation64 함수를 사용합니다. 스택을 검사하는 추가 방법은 이 설명서의 디버거 엔진 API 사용 섹션에서 스택 추적 검사를 참조하세요.

대상의 운영 체제 스레드에 대한 정보를 얻으려면 Ioctl 작업 IG_GET_THREAD_OS_INFO 사용합니다.

프로세스

현재 프로세스를 설명하는 PEB(프로세스 환경 블록)의 주소를 얻으려면 GetPebAddress 메서드를 사용합니다. 커널 모드 디버깅에서 KPROCESS 구조체를 사용하여 프로세스를 설명할 수도 있습니다. 이 구조체는 GetCurrentProcessAddr 에서 반환됩니다(사용자 모드 디버깅에서는 GetCurrentProcessAddr 이 PEB의 주소를 반환함).

GetCurrentProcessHandle 메서드는 현재 프로세스에 대한 시스템 핸들을 반환합니다.

추가 정보

보다 강력한 스레드 조작 및 프로세스 조작 API는 이 설명서의 디버거 엔진 API 사용 섹션에서 스레드 및 프로세스 제어를 참조하세요.