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 |