RtlVirtualUnwind 関数 (winnt.h)
指定した関数コンテキストの前にある関数の呼び出しコンテキストを取得します。
注意
この関数は、すべてのプロセッサ プラットフォームに実装されているわけではありません。実装は、それをサポートするプラットフォームごとに異なります。 次のプロトタイプは、すべての潜在的なパラメーターとそのアプリケーションの一覧を示しています。 詳細については、プロセッサ固有の関数プロトタイプに関するページを参照してください。
構文
NTSYSAPI PEXCEPTION_ROUTINE RtlVirtualUnwind(
[in] DWORD HandlerType,
[in] DWORD64 ImageBase,
[in] DWORD64 ControlPc,
[in] PRUNTIME_FUNCTION FunctionEntry,
[in, out] PCONTEXT ContextRecord,
[out] PVOID *HandlerData,
[out] PDWORD64 EstablisherFrame,
[in, out, optional] PKNONVOLATILE_CONTEXT_POINTERS ContextPointers
);
パラメーター
[in] HandlerType
ハンドラーの型。 このパラメーターには、次の値のいずれかを指定できます。
このパラメーターは x64 にのみ存在します。
[in] ImageBase
関数が属するモジュールのベース アドレス。
[in] ControlPc
コントロールが指定した関数を離れた仮想アドレス。
[in] FunctionEntry
指定した関数の関数テーブル エントリのアドレス。 関数テーブルエントリを取得するには、 RtlLookupFunctionEntry 関数を呼び出します。
[in, out] ContextRecord
前のフレームの コンテキスト を表す CONTEXT 構造体へのポインター。
[out] HandlerData
PC の場所。 このパラメーターが 0 の場合、PC は関数のプロローグ、エピローグ、または null フレーム領域にあります。 このパラメーターが 1 の場合、PC は関数の本体にあります。
このパラメーターは x64 には存在しません。
[out] EstablisherFrame
establisher フレーム ポインター値を受け取る FRAME_POINTERS 構造体へのポインター。 実際のフレーム ポインターは、 InFunction が の場合にのみ定義されます 1
。
このパラメーターは、x64 でPULONG64 型です。
[in, out, optional] ContextPointers
コンテキスト ポインター構造体への省略可能なポインター。
戻り値
この関数は、 EXCEPTION_ROUTINE コールバック関数へのポインターを返します。
注釈
x64 のエピローグ マーカーの完全な一覧は次のとおりです。
- Ret
- ret n
- rep ret
- jmp imm8 | imm32 。ターゲットが巻き戻される関数の外側にある
- jmp qword ptr imm32
- rex.w jmp reg
要件
対象プラットフォーム | Windows |
ヘッダー | winnt.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |