StackWalk64

スタックトレースを取得する。(StackWalk64)

StackWalk64 MachineType, hProcess, hThread, StackFrame, ContextRecord, ReadMemoryRoutine, FunctionTableAccessRoutine, GetModuleBaseRoutine, TranslateAddress

MachineType : [int] スタックトレース対象コンピュータのアーキテクチャ種別。以下のいずれかを指定できる。
hProcess : [intptr] スタックトレース対象プロセスのハンドル。ReadMemoryRoutine に有効なコールバックを渡す場合は必ずしも有効なプロセスハンドルである必要はなく、StackWalk64 呼び出し全体で一意かつ一貫していればトークンでもよい。シンボルハンドラと併用する場合は各関数呼び出しで同じプロセスハンドルを使うこと。
hThread : [intptr] スタックトレース対象スレッドのハンドル。ReadMemoryRoutine に有効なコールバックを渡す場合、必ずしも有効なスレッドハンドルである必要はない。
StackFrame : [var] STACKFRAME64 構造体へのポインタ。成功時、次のフレームの情報を受け取る。
ContextRecord : [intptr] CONTEXT 構造体へのポインタ。MachineType が IMAGE_FILE_MACHINE_I386 でない場合に必須。有効なコンテキストレコードを渡すと StackWalk64 が処理できる状況の幅が広がる。このコンテキストは変更される可能性があるため、変更されたくないコンテキストは渡さないこと。
ReadMemoryRoutine : [int] メモリ読み取りサービスを提供するコールバックルーチン。プロセスのアドレス空間からメモリを読むときに呼ばれる。NULL を渡すと既定のルーチンが使われ、その場合 hProcess は有効なプロセスハンドルでなければならない。
FunctionTableAccessRoutine : [int] プロセスのランタイム関数テーブルへのアクセスを提供するコールバックルーチン。通常 SymFunctionTableAccess64 を渡せばよい。
GetModuleBaseRoutine : [int] 任意の仮想アドレスに対するモジュールベースを提供するコールバック。通常 SymGetModuleBase64 を渡せばよい。
TranslateAddress : [int] 16 ビットアドレス変換用コールバック。ほとんどの呼び出し元は NULL を渡せばよい。

(プラグイン / モジュール : dbghelp.dll)

解説

スタックトレースを取得する。(StackWalk64)

[戻り値]
成功時は TRUE、失敗時は FALSE を返す。StackWalk64 は通常 last error を設定しないことに注意。

[備考]
StackWalk64
はスタックトレース取得のための移植可能な方法を提供する。自前実装よりも本関数の利用が推奨される。StackFrame の
AddrPC、AddrFrame、AddrStack メンバーが初期化されていない場合、初回呼び出しは失敗する。DbgHelp
のすべての関数と同様、本関数は単一スレッドでのみ動作するため、複数スレッドからの呼び出しは同期が必要。本関数は従来の StackWalk
を置き換えるものである。
(以下省略)

情報

プラグイン / モジュールdbghelp.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の dbghelp.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_dbghelp_gen2.hs