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