Share via


RtlInstallFunctionTableCallback 函式 (winnt.h)

將動態函式數據表新增至動態函式數據表清單。

語法

NTSYSAPI BOOLEAN RtlInstallFunctionTableCallback(
  [in] DWORD64                        TableIdentifier,
  [in] DWORD64                        BaseAddress,
  [in] DWORD                          Length,
  [in] PGET_RUNTIME_FUNCTION_CALLBACK Callback,
  [in] PVOID                          Context,
  [in] PCWSTR                         OutOfProcessCallbackDll
);

參數

[in] TableIdentifier

動態函式數據表回呼的標識碼。 必須設定兩個低序位。 例如 ,BaseAddress|0x3。

[in] BaseAddress

回呼函式所管理記憶體區域的基位址。

[in] Length

回呼函式所管理的記憶體區域大小,以位元組為單位。

[in] Callback

回呼函式的指標,呼叫以擷取指定記憶體區域中函式的函式數據表專案。 如需 PGET_RUNTIME_FUNCTION_CALLBACK 類型的定義,請參閱 WinNT.h。

[in] Context

要傳遞至回呼函式之使用者定義數據的指標。

[in] OutOfProcessCallbackDll

字串的選擇性指標,指定 DLL 的路徑,提供進程外部的函式數據表專案。

當調試程式回溯至回呼函式所管理位址範圍內的函式時,它會載入此 DLL 並呼叫 OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME 函式,其類型為 POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK。 如需詳細資訊,請參閱 WinNT.h 中這些項目的定義。

傳回值

如果函式成功,則傳回值為 TRUE。 如果函式失敗,則傳回值為 FALSE

備註

函式數據表用於 64 位 Windows,以判斷如何回溯或逐步執行堆疊。 這些數據表通常是由編譯程序產生,並儲存為映像的一部分。 不過,應用程式必須提供動態產生的程式代碼函式數據表。 如需函式數據表的詳細資訊,請參閱您系統的架構指南。

此函式適用於非常動態的程序代碼。 應用程式會指定所產生程式代碼的記憶體範圍,但不需要在回溯要求需要數據表之前產生數據表。 此時,系統會使用 Context 和控制項地址呼叫回呼函式。 回呼函式必須傳回指定位址的運行時間函式專案。 請務必避免在回呼函式與程式代碼產生器之間建立死結。

對於從範本產生的程式代碼,或只在程式存留期間產生一次的程式代碼,請使用 RtlAddFunctionTable 函式。

規格需求

需求
目標平台 Windows
標頭 winnt.h (包括 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

RtlAddFunctionTable

RtlDeleteFunctionTable