(winnt.h) RtlVirtualUnwind 函式

擷取指定函式內容前面的函式調用內容。

注意

 此函式並未在所有處理器平台上實作,而且在每個支援它的平臺上實作不同。 下列原型會列出所有可能的參數及其應用程式。 進一步閱讀處理器特定的函式原型。

語法

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

計算機的位置。 如果此參數為 0,則電腦位於函式的序言、結尾或 Null 框架區域。 如果此參數為 1,計算機會位於函式的主體中。

這個參數不存在於 x64 上。

[out] EstablisherFrame

接收建立器框架指標值的 FRAME_POINTERS 結構的指標。 只有在 InFunction1時,才會定義實際的框架指標。

此參數的類型 為 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)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

上下文

EXCEPTION_RECORD

RtlLookupFunctionEntry

VBS 記憶體保護區中可用的 Vertdll API