デバッガがアクティブなプロセスにアタッチしてデバッグできるようにする。
DebugActiveProcess dwProcessId
dwProcessId : [int] デバッグするプロセスの識別子。デバッガには、DEBUG_ONLY_THIS_PROCESS フラグでプロセスを作成したかのようにデバッグアクセスが付与される。詳細は本トピックの Remarks セクションを参照。
(プラグイン / モジュール : kernel32.dll)
デバッガがアクティブなプロセスにアタッチしてデバッグできるようにする。 [戻り値] 関数が成功した場合、戻り値は 0 以外である。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには GetLastError を呼ぶ。 [備考] プロセスのデバッグを停止するには、プロセスを終了するか DebugActiveProcessStop 関数を呼び出さなければならない。DebugSetProcessKillOnExit を使わない限り、デバッガを終了するとプロセスも終了する。デバッガは対象プロセスへの適切なアクセス権を持っている必要があり、PROCESS_ALL_ACCESS でプロセスを開ける必要がある。対象プロセスがデバッガにフルアクセス未満を付与するセキュリティ記述子で作成されている場合、DebugActiveProcess は失敗することがある。デバッグするプロセスに SE_DEBUG_NAME 特権が付与され有効になっていれば、任意のプロセスをデバッグできる。プロセス識別子をシステムがチェックし有効なデバッグアタッチが行われていると判断した後、関数は TRUE を返す。その後デバッガは WaitForDebugEvent 関数を使ってデバッグイベントを待機することが期待される。システムはプロセス内のすべてのスレッドをサスペンドし、プロセスの現在の状態を表すデバッグイベントをデバッガに送る。システムはデバッガに、dwProcessId パラメータで指定されたプロセスを表す単一の CREATE_PROCESS_DEBUG_EVENT デバッグイベントを送る。CREATE_PROCESS_DEBUG_INFO 構造体の lpStartAddress メンバは NULL である。プロセスの一部となっている各スレッドについて、システムは CREATE_THREAD_DEBUG_EVENT デバッグイベントを送る。CREATE_THREAD_DEBUG_INFO 構造体の lpStartAddress メンバは NULL である。対象プロセスのアドレス空間にロードされている各 DLL について、システムは LOAD_DLL_DEBUG_EVENT デバッグイベントを送る。システムは、プロセス内の最初のスレッドが再開された後にブレークポイント命令を実行するように準備する。このスレッドを継続させると、デバッガがアタッチされる前と同じことを行うように戻る。これらすべてが完了すると、システムはプロセス内のすべてのスレッドを再開する。プロセス内の最初のスレッドが再開されたとき、ブレークポイント命令を実行し、EXCEPTION_DEBUG_EVENT デバッグイベントがデバッガに送られる。これ以降のすべてのデバッグイベントは通常のメカニズムと規則に従ってデバッガに送られる。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |