共用方式為


SymLoadModuleExW 函式 (dbghelp.h)

載入指定模組的符號數據表。

語法

DWORD64 IMAGEAPI SymLoadModuleExW(
  [in] HANDLE        hProcess,
  [in] HANDLE        hFile,
  [in] PCWSTR        ImageName,
  [in] PCWSTR        ModuleName,
  [in] DWORD64       BaseOfDll,
  [in] DWORD         DllSize,
  [in] PMODLOAD_DATA Data,
  [in] DWORD         Flags
);

參數

[in] hProcess

原本傳遞至 SymInitialize 函式之進程的句柄。

[in] hFile

可執行檔映像檔案的句柄。 這個自變數主要是由調試程式使用,其中調試程式會傳遞從偵錯事件取得的檔案句柄。 NULL 值表示未使用 hFile

[in] ImageName

可執行檔案映像的名稱。 此名稱可以包含部分路徑、完整路徑或完全沒有路徑。 如果檔案無法依提供的名稱找到,則會使用符號搜尋路徑。

[in] ModuleName

模組的快捷方式名稱。 如果指標值 NULL,連結庫會使用符號檔的基底名稱來建立名稱。

[in] BaseOfDll

模組的載入位址。 如果值為零,連結庫會從符號檔取得載入位址。 符號檔中包含的載入位址不一定是實際的載入位址。 具有實際載入地址的調試程式和其他應用程式在呼叫此函式時,應該使用實際的載入位址。

如果映像是 .pdb 檔案,此參數不能為零。

[in] DllSize

模組的大小,以位元組為單位。 如果值為零,連結庫會從符號檔取得大小。 符號檔中包含的大小不一定是實際大小。 調試程式和具有實際大小的其他應用程式在呼叫此函式時,應該使用實際大小。

如果映像是 .pdb 檔案,此參數不能為零。

[in] Data

MODLOAD_DATA 結構的指標,表示標準PE標頭以外的標頭。 這個參數是選擇性的,而且可以 NULL

[in] Flags

此參數可以是零或一或多個下列值。 如果此參數為零,函式會載入模組和模組的符號。

價值 意義
SLMFLAG_NO_SYMBOLS
0x4
載入模組,但不會載入模組的符號。
SLMFLAG_VIRTUAL
0x1
BaseOfDll中指定的位址,建立名為 ModuleName 的虛擬模組。 若要將符號新增至本課程模組,請呼叫 SymAddSymbol 函式。

傳回值

如果函式成功,傳回值就是載入模組的基位址。

如果函式失敗,傳回值為零。 若要擷取擴充的錯誤資訊,請呼叫 GetLastError

如果模組已經載入,傳回值為零,而且 getLastError 傳回ERROR_SUCCESS。

言論

符號處理程式會建立模組的專案,如果關閉延後符號載入選項,則會嘗試載入符號。 如果啟用延後符號載入,模組會標示為延後,而且在對模組中的符號進行參考之前,不會載入符號。 因此,呼叫 SymLoadModuleEx之後,您應該一律呼叫 SymGetModuleInfo64 函式。

若要卸除符號數據表,請使用 SymUnloadModule64 函式。

所有 DbgHelp 函式,例如此函式,都是單個線程。 因此,從一個以上的線程呼叫此函式可能會導致非預期的行為或記憶體損毀。 若要避免這種情況,您必須將多個線程的所有並行呼叫同步至此函式。

若要呼叫此函式的 Unicode 版本,請定義DBGHELP_TRANSLATE_TCHAR。

例子

如需範例,請參閱 載入符號模組

注意

dbghelp.h 標頭會根據 UNICODE 預處理器常數的定義,將 SymLoadModuleEx 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
目標平臺 窗戶
標頭 dbghelp.h
連結庫 Dbghelp.lib
DLL Dbghelp.dll
可轉散發 DbgHelp.dll 6.0 或更新版本

另請參閱

DbgHelp 函式

MODLOAD_DATA

SymAddSymbol

SymUnloadModule64