次の方法で共有


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 の使用」セクションの「スレッドとプロセスの制御」を参照してください。