RtlRestoreContext 関数 (winnt.h)

呼び出し元のコンテキストを指定したコンテキスト レコードに復元します。

構文

NTSYSAPI VOID __cdecl RtlRestoreContext(
  PCONTEXT          ContextRecord,
  _EXCEPTION_RECORD *ExceptionRecord
);

パラメーター

[in] ContextRecord

CONTEXT 構造体へのポインター。

[in] ExceptionRecord

EXCEPTION_RECORD構造体へのポインター。 このパラメーターは省略可能であり、通常は NULL である必要があります。

例外レコードは、主に長いジャンプと C++ キャッチスローのサポートで使用されます。 ExceptionCode メンバーがSTATUS_LONGJUMP場合、ExceptionInformation メンバーにはジャンプ バッファーへのポインターが含まれます。 RtlRestoreContext は、コンテキスト レコードが復元される前に、 のジャンプ バッファーからコンテキスト レコードに非揮発性状態をコピーします。

ExceptionCode メンバーがSTATUS_UNWIND_CONSOLIDATE場合、ExceptionInformation メンバーには、catch ハンドラーなどのコールバック関数へのポインターが含まれます。 RtlRestoreContext は 、コールバック関数を呼び出す前に、そのフレームとコンテキスト レコードで指定されたフレームの間の呼び出しフレームを統合します。 これにより、コールバック関数で発生する可能性のある例外処理からフレームが非表示になります。 このアンワインドと一般的なアンワインドの違いは、スタック上のデータがまだ存在するため、throw オブジェクトなどのフレーム データを引き続き使用できる点です。 コールバック関数は、コンテキスト レコードで更新する新しいプログラム カウンターを返します。これは、通常の復元コンテキストで使用されます。

戻り値

この関数は値を返しません。

要件

   
対象プラットフォーム Windows
ヘッダー winnt.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

CONTEXT

RtlCaptureContext