次の方法で共有


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 にのみ存在します。

意味
UNW_FLAG_NHANDLER
0x0
関数にはハンドラーがありません。
UNW_FLAG_EHANDLER
0x1
関数には、呼び出す必要がある例外ハンドラーがあります。
UNW_FLAG_UHANDLER
0x2
この関数には、例外をアンワインドするときに呼び出す必要がある終了ハンドラーがあります。
UNW_FLAG_CHAININFO
0x4
FunctionEntry メンバーは、前の関数テーブル エントリの内容です。

[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

関連項目

CONTEXT

EXCEPTION_RECORD

RtlLookupFunctionEntry

VBS エンクレーブで使用できる Vertdll API