次の方法で共有


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 の場合、関数はモジュールとモジュールのシンボルを読み込みます。

価値 意味
SLMFLAG_NO_SYMBOLS
0x4
モジュールを読み込みますが、モジュールのシンボルは読み込まれません。
SLMFLAG_VIRTUAL
0x1
BaseOfDllで指定されたアドレス ModuleName という名前 仮想モジュールを作成します。 このモジュールにシンボルを追加するには、SymAddSymbol 関数を呼び出します。

戻り値

関数が成功した場合、戻り値は読み込まれたモジュールのベース アドレスです。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

モジュールが既に読み込まれている場合、戻り値は 0 で、GetLastError はERROR_SUCCESSを返します。

備考

シンボル ハンドラーはモジュールのエントリを作成し、遅延シンボルの読み込みオプションがオフになっている場合は、シンボルの読み込みが試行されます。 遅延シンボルの読み込みが有効になっている場合、モジュールは遅延としてマークされ、モジュール内のシンボルへの参照が行われるまでシンボルは読み込まれません。 したがって、SymLoadModuleExを呼び出した後、常に SymGetModuleInfo64 関数 呼び出す必要があります。

シンボル テーブルをアンロードするには、SymUnloadModule64 関数を使用します。

この関数など、すべての DbgHelp 関数はシングル スレッドです。 そのため、複数のスレッドからこの関数を呼び出すと、予期しない動作やメモリ破損が発生する可能性があります。 これを回避するには、複数のスレッドからのすべての同時呼び出しをこの関数に同期する必要があります。

この関数の Unicode バージョンを呼び出すには、DBGHELP_TRANSLATE_TCHARを定義します。

例については、「シンボル モジュールの読み込み 」を参照してください。

手記

dbghelp.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SymLoadModuleEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム の ウィンドウズ
ヘッダー dbghelp.h
ライブラリ Dbghelp.lib
DLL Dbghelp.dll
再頒布可能パッケージの DbgHelp.dll 6.0 以降

関連項目

DbgHelp 関数 の

MODLOAD_DATA

SymAddSymbol を する

SymUnloadModule64