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
此參數可以是零或一或多個下列值。 如果此參數為零,函式會載入模組和模組的符號。
值 | 意義 |
---|---|
|
載入模組,但不會載入模組的符號。 |
|
在BaseOfDll中指定的位址建立名為ModuleName的虛擬模組。 若要將符號新增至本課程模組,請呼叫 SymAddSymbol 函式。 |
傳回值
如果函式成功,傳回值就是載入模組的基底位址。
如果此函式失敗,則傳回值為零。 若要擷取擴充的錯誤資訊,請呼叫 GetLastError。
如果模組已經載入,則傳回值為零, 而 GetLastError 會傳回ERROR_SUCCESS。
備註
符號處理常式會建立模組的專案,如果關閉延後符號載入選項,則會嘗試載入符號。 如果啟用延後符號載入,模組會標示為延後,而且在對模組中的符號進行參考之前,不會載入符號。 因此,呼叫SymLoadModuleEx之後,您應該一律呼叫SymGetModuleInfo64函式。
若要卸載符號表,請使用 SymUnloadModule64 函式。
所有 DbgHelp 函式,例如此函式都是單一執行緒。 因此,從多個執行緒呼叫此函式可能會導致非預期的行為或記憶體損毀。 若要避免這種情況,您必須將所有並行呼叫從多個執行緒同步處理到此函式。
若要呼叫此函式的 Unicode 版本,請定義DBGHELP_TRANSLATE_TCHAR。
範例
如需範例,請參閱 載入符號模組。
注意
dbghelp.h 標頭會將 SymLoadModuleEx 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
需求
目標平台 | Windows |
標頭 | dbghelp.h |
程式庫 | Dbghelp.lib |
Dll | Dbghelp.dll |
可轉散發套件 | DbgHelp.dll 6.0 或更新版本 |