SymLoadModuleExW 関数 (dbghelp.h)
指定したモジュールのシンボル テーブルを読み込みます。
構文
DWORD64 IMAGEAPI SymLoadModuleExW(
[in] HANDLE hProcess,
[in] HANDLE hFile,
[in] PCWSTR ImageName,
[in] PCWSTR ModuleName,
[in] DWORD64 BaseOfDll,
[in] DWORD DllSize,
[in] PMODLOAD_DATA Data,
[in] DWORD Flags
);
パラメーター
[in] hProcess
SymInitialize 関数に最初に渡されたプロセスへのハンドル。
[in] hFile
実行可能イメージのファイルへのハンドル。 この引数は主にデバッガーによって使用され、デバッガーはデバッグ イベントから取得したファイル ハンドルを渡します。 NULL の値は、hFile が使用されていないことを示します。
[in] ImageName
実行可能イメージの名前。 この名前には、部分的なパス、完全なパス、またはパスをまったく含めずに指定できます。 指定された名前でファイルを見つけられない場合は、シンボル検索パスが使用されます。
[in] ModuleName
モジュールのショートカット名。 ポインター値が NULL の場合、ライブラリはシンボル ファイルのベース名を使用して名前を作成します。
[in] BaseOfDll
モジュールの読み込みアドレス。 値が 0 の場合、ライブラリはシンボル ファイルから読み込みアドレスを取得します。 シンボル ファイルに含まれる読み込みアドレスが、必ずしも実際の読み込みアドレスであるとは限りません。 デバッガーおよび実際の読み込みアドレスを持つ他のアプリケーションでは、この関数を呼び出すときに実際の読み込みアドレスを使用する必要があります。
イメージが .pdb ファイルの場合、このパラメーターを 0 にすることはできません。
[in] DllSize
モジュールのサイズ (バイト単位)。 値が 0 の場合、ライブラリはシンボル ファイルからサイズを取得します。 シンボル ファイルに含まれるサイズは、必ずしも実際のサイズではありません。 デバッガーや実際のサイズを持つ他のアプリケーションでは、この関数を呼び出すときに実際のサイズを使用する必要があります。
イメージが .pdb ファイルの場合、このパラメーターを 0 にすることはできません。
[in] Data
標準 PE ヘッダー以外のヘッダーを表す MODLOAD_DATA 構造体へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。
[in] Flags
このパラメーターには、0 個または 1 つ以上の次の値を指定できます。 このパラメーターが 0 の場合、関数はモジュールとモジュールのシンボルを読み込みます。
値 | 意味 |
---|---|
|
モジュールを読み込みますが、モジュールのシンボルは読み込まれません。 |
|
BaseOfDll で指定されたアドレスに ModuleName という名前の仮想モジュールを作成します。 このモジュールにシンボルを追加するには、 SymAddSymbol 関数を呼び出します。 |
戻り値
関数が成功した場合、戻り値は読み込まれたモジュールのベース アドレスです。
関数が失敗した場合は、0 を返します。 拡張エラー情報を取得するには、 GetLastError を呼び出します。
モジュールが既に読み込まれている場合、戻り値は 0 で、 GetLastError は ERROR_SUCCESSを返します。
解説
シンボル ハンドラーはモジュールのエントリを作成し、遅延シンボル読み込みオプションがオフになっている場合は、シンボルの読み込みが試行されます。 遅延シンボルの読み込みが有効になっている場合、モジュールは遅延としてマークされ、モジュール内のシンボルへの参照が行われるまでシンボルは読み込まれません。 したがって、SymLoadModuleEx を呼び出した後は、常に SymGetModuleInfo64 関数を呼び出す必要があります。
シンボル テーブルをアンロードするには、 SymUnloadModule64 関数を使用します。
この関数など、すべての DbgHelp 関数はシングル スレッドです。 そのため、複数のスレッドからこの関数を呼び出すと、予期しない動作やメモリ破損が発生する可能性があります。 これを回避するには、複数のスレッドからのすべての同時呼び出しをこの関数に同期する必要があります。
この関数の Unicode バージョンを呼び出すには、DBGHELP_TRANSLATE_TCHARを定義します。
例
例については、「 シンボル モジュールの読み込み」を参照してください。
Note
dbghelp.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SymLoadModuleEx を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
対象プラットフォーム | Windows |
ヘッダー | dbghelp.h |
Library | Dbghelp.lib |
[DLL] | Dbghelp.dll |
再頒布可能パッケージ | DbgHelp.dll 6.0 以降 |