共用方式為


SymGetModuleInfoW64 函式 (dbghelp.h)

擷取指定模組的模組資訊。

語法

BOOL IMAGEAPI SymGetModuleInfoW64(
  [in]  HANDLE              hProcess,
  [in]  DWORD64             qwAddr,
  [out] PIMAGEHLP_MODULEW64 ModuleInfo
);

參數

[in] hProcess

原本傳遞至 SymInitialize 函式之進程的控制碼。

[in] qwAddr

包含在 SymLoadModule64 函式所載入其中一個模組中的虛擬位址。

[out] ModuleInfo

IMAGEHLP_MODULEW64結構的指標。 SizeOfStruct成員必須設定為IMAGEHLP_MODULEW64結構的大小。 不正確值會導致錯誤。

傳回值

如果函式成功,則傳回值為 TRUE

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

備註

模組資料表會搜尋包含 dwAddr的模組。 模組是以每個模組的負載位址和大小為基礎。 如果找到有效的模組, ModuleInfo 參數會填入模組的相關資訊。

此函式所使用的 IMAGEHLP_MODULEW64 結構大小已隨著年份而變更。 如果呼叫的 DbgHelp.dll 版本早于用來編譯呼叫程式碼的 DbgHelp.h,則此函式可能會失敗,並出現錯誤碼 ERROR_INVALID_PARAMETER。 呼叫系統版本 (%WinDir%\System32\DbgHelp.dll) 時,通常會發生這種情況。 呼叫系統版本的程式碼 DbgHelp.dll 必須使用適用于該 Windows 版本的適當 SDK 或舊版的 SDK 進行編譯。

建議的模型是轉散發所需的 DbgHelp.dll 版本,以及呼叫的軟體。 這可讓呼叫端使用最強固的 DbgHelp.dll 版本,以及簡化的升級。 在 Windows 套件 的偵錯工具中,一律可以找到最新版本的 DbgHelp.dll。 一般規則是編譯成使用舊版的程式碼一律會與較新版本搭配使用。

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

若要呼叫此函式的 Unicode 版本,請定義 DBGHELP_TRANSLATE_TCHARSymGetModuleInfoW64 的定義如下:DbgHelp.h。


BOOL
IMAGEAPI
SymGetModuleInfoW64(
    __in HANDLE hProcess,
    __in DWORD64 qwAddr,
    __out PIMAGEHLP_MODULEW64 ModuleInfo
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetModuleInfo64   SymGetModuleInfoW64
#endif

此函式會取代 SymGetModuleInfo 函式。 如需詳細資訊,請參閱 更新的平臺支援SymGetModuleInfo 的定義如下:DbgHelp.h。

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetModuleInfo   SymGetModuleInfo64
#define SymGetModuleInfoW  SymGetModuleInfoW64
#else
BOOL
IMAGEAPI
SymGetModuleInfo(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULE ModuleInfo
    );

BOOL
IMAGEAPI
SymGetModuleInfoW(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULEW ModuleInfo
    );
#endif

需求

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

另請參閱

DbgHelp 函式

IMAGEHLP_MODULEW64

SymInitialize

SymLoadModule64