共用方式為


SymEnumSymbolsW 函式 (dbghelp.h)

列舉進程中的所有符號。

語法

BOOL IMAGEAPI SymEnumSymbolsW(
  [in]           HANDLE                          hProcess,
  [in]           ULONG64                         BaseOfDll,
  [in, optional] PCWSTR                          Mask,
  [in]           PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
  [in, optional] PVOID                           UserContext
);

參數

[in] hProcess

進程的句柄。 此句柄先前必須傳遞至 SymInitialize 函式。

[in] BaseOfDll

模組的基位址。 如果此值為零,且 Mask 包含驚歎號 (!),函式會跨模組查看。 如果此值為零,且 Mask 不包含驚歎號,則函式會使用 SymSetContext 函式所建立的範圍。

[in, optional] Mask

表示要列舉之符號名稱的通配符字串。 文字可以選擇性地包含通配符 「*」 和 “?”。

若要指定特定模組或一組模組,請以指定模組的通配符字串開始文字,後面接著驚嘆號。 指定模組時,會忽略BaseOfDll

價值 意義
foo
如果 BaseOfDll 不是零,則 SymEnumSymbols 會尋找名為 “foo” 的全域符號。

如果 BaseOfDll 為零,則 SymEnumSymbols 會在最近 呼叫 SymSetContext 函式所建立的範圍內尋找名為 “foo” 的本機符號。

foo?
如果 BaseOfDll 不是零,則 SymEnumSymbols 會尋找以 “foo” 開頭的全域符號,並在之後包含一個額外的字元,例如 “fool” 和 “foot”。

如果 baseOfDll 為零,則 SymEnumSymbols 會尋找以 “foo” 開頭的符號,並在之後包含一個額外的字元,例如 “fool” 和 “foot”。 搜尋會位於最近呼叫 symSetContext 函式所建立的範圍內。

foo*!bar
SymEnumSymbols 會查看每個載入的模組,其開頭是名為 “bar” 符號的文字 “foo”。 它可以找到這些相符專案,例如 「foot!bar」、“footlocker!bar” 和 “fool!bar”。
*!*
SymEnumSymbols 會列舉每個載入模組中的每個符號。

[in] EnumSymbolsCallback

SymEnumSymbolsProc 回呼函式,可接收符號資訊。

[in, optional] UserContext

傳遞至回呼函式的使用者定義值,或 NULL。 這個參數通常由應用程式用來將指標傳遞至提供回呼函式內容的數據結構。

傳回值

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

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

言論

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

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

例子

如需範例,請參閱 列舉符號

注意

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

要求

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

另請參閱

DbgHelp 函式

SymEnumSymbolsProc