SymGetSymFromName 関数 (dbghelp.h)
指定した名前のシンボルを検索します。
構文
BOOL IMAGEAPI SymGetSymFromName(
[in] HANDLE hProcess,
[in] PCSTR Name,
[in, out] PIMAGEHLP_SYMBOL Symbol
);
パラメーター
[in] hProcess
SymInitialize 関数に最初に渡されたプロセスへのハンドル。
[in] Name
シンボルが配置されるシンボル名。
[in, out] Symbol
IMAGEHLP_SYMBOL64構造体へのポインター。
戻り値
関数が成功した場合、戻り値は TRUE になります。
関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報を取得するには、 GetLastError を呼び出します。
注釈
SymGetSymFromName64 関数は、指定された名前のシンボルを検索するために使用されます。 名前には、シンボル検索を 1 つのモジュールのシンボル テーブルに分離するモジュール プレフィックスを含めることができます。
モジュール プレフィックスは"module!" の形式です。 "!" 文字は、モジュール名とシンボル名の間の区切り記号です。 モジュール プレフィックスがない場合は、読み込まれる最初のモジュールから始めて、各モジュールのシンボル テーブルに対して直線的な方法で検索が実行されます。
2 つの理由から、モジュール プレフィックスを使用することをお勧めします。 最初に、シンボル検索がはるかに高速に行われます。 2 つ目は、遅延シンボルの読み込みがオンになっている場合、検索対象のモジュールごとにシンボルが読み込まれます。 シンボルが見つかると、シンボル情報は呼び出し元によって提供される シンボル バッファーにコピーされます。 呼び出し元は、SymGetSymFromName64 を呼び出す前に、シンボル バッファーを適切に割り当て、IMAGEHLP_SYMBOL64構造体に必要なパラメーターを入力する必要があります。
この関数など、すべての DbgHelp 関数はシングル スレッドです。 そのため、複数のスレッドからこの関数を呼び出すと、予期しない動作やメモリ破損が発生する可能性があります。 これを回避するには、複数のスレッドからのすべての同時呼び出しをこの関数に同期する必要があります。
この関数は SymGetSymFromName 関数よりも優先されます。 詳細については、「 プラットフォーム サポートの更新」を参照してください。 SymGetSymFromName は、Dbghelp.h で次のように定義されています。
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetSymFromName SymGetSymFromName64
#else
BOOL
IMAGEAPI
SymGetSymFromName(
__in HANDLE hProcess,
__in PCSTR Name,
__inout PIMAGEHLP_SYMBOL Symbol
);
#endif
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | dbghelp.h |
Library | Dbghelp.lib |
[DLL] | Dbghelp.dll |
再頒布可能パッケージ | DbgHelp.dll 5.1 以降 |