DebugActiveProcess

デバッガがアクティブなプロセスにアタッチしてデバッグできるようにする。

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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs