SymLoadModuleEx 函式 (dbghelp.h)

載入指定模組的符號表。

語法

DWORD64 IMAGEAPI SymLoadModuleEx(
  [in] HANDLE        hProcess,
  [in] HANDLE        hFile,
  [in] PCSTR         ImageName,
  [in] PCSTR         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。

範例

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

規格需求

需求
目標平台 Windows
標頭 dbghelp.h
程式庫 Dbghelp.lib
Dll Dbghelp.dll
可轉散發套件 DbgHelp.dll 6.0 或更新版本

另請參閱

DbgHelp 函式

MODLOAD_DATA

SymAddSymbol

SymUnloadModule64