SymGetLineFromAddr 函式 (dbghelp.h)

找出指定位址的來源行。

語法

BOOL IMAGEAPI SymGetLineFromAddr(
  [in]  HANDLE         hProcess,
  [in]  DWORD          dwAddr,
  [out] PDWORD         pdwDisplacement,
  [out] PIMAGEHLP_LINE Line
);

參數

[in] hProcess

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

[in] dwAddr

應該放置行的位址。 位址不需要位於線條界限上。 如果位址出現在行的開頭和行尾之前,就會找到該行。

[out] pdwDisplacement

行開頭或零的位移以位元組為單位。

[out] Line

IMAGEHLP_LINE64 結構的指標。

傳回值

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

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

備註

呼叫端必須先正確配置Line緩衝區,並在呼叫SymGetLineFromAddr64之前填入IMAGEHLP_LINE64結構的必要成員。

此函式會傳回另一個函式可能重複使用之緩衝區的指標。 因此,請務必立即將傳回的數據複製到另一個緩衝區。

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

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

BOOL
IMAGEAPI
SymGetLineFromAddrW64(
    _In_ HANDLE hProcess,
    _In_ DWORD64 dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINEW64 Line
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
 #define SymGetLineFromAddr64   SymGetLineFromAddrW64
#endif

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

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetLineFromAddr SymGetLineFromAddr64
#define SymGetLineFromAddrW SymGetLineFromAddrW64
#else
BOOL
IMAGEAPI
SymGetLineFromAddr(
    _In_ HANDLE hProcess,
    _In_ DWORD dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINE Line
    );

BOOL
IMAGEAPI
SymGetLineFromAddrW(
    _In_ HANDLE hProcess,
    _In_ DWORD dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINEW Line
    );
#endif

範例

如需範例,請參閱 依位址擷取符號資訊

規格需求

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

另請參閱

DbgHelp 函式

IMAGEHLP_LINE64

SymGetLineFromName64

SymInitialize