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
價值 | 意義 |
---|---|
|
如果 BaseOfDll 不是零,則 SymEnumSymbols 會尋找名為 “foo” 的全域符號。
如果 BaseOfDll 為零,則 SymEnumSymbols 會在最近 呼叫 SymSetContext 函式所建立的範圍內尋找名為 “foo” 的本機符號。 |
|
如果 BaseOfDll 不是零,則 SymEnumSymbols 會尋找以 “foo” 開頭的全域符號,並在之後包含一個額外的字元,例如 “fool” 和 “foot”。
如果 baseOfDll 為零,則 SymEnumSymbols 會尋找以 “foo” 開頭的符號,並在之後包含一個額外的字元,例如 “fool” 和 “foot”。 搜尋會位於最近呼叫 symSetContext 函式所建立的範圍內。 |
|
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 或更新版本 |