SymGetModuleInfo 関数 (dbghelp.h)

指定したモジュールのモジュール情報を取得します。

構文

BOOL IMAGEAPI SymGetModuleInfo(
  [in]  HANDLE           hProcess,
  [in]  DWORD            dwAddr,
  [out] PIMAGEHLP_MODULE ModuleInfo
);

パラメーター

[in] hProcess

SymInitialize 関数に最初に渡されたプロセスへのハンドル。

[in] dwAddr

SymLoadModule64 関数によって読み込まれたモジュールのいずれかに含まれる仮想アドレス

[out] ModuleInfo

IMAGEHLP_MODULE64構造体へのポインター。 SizeOfStruct メンバーは、IMAGEHLP_MODULE64構造体のサイズに設定する必要があります。 無効な値を指定すると、エラーが発生します。

戻り値

関数が成功した場合、戻り値は TRUE になります

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

解説

モジュール テーブルは、 dwAddr を含むモジュールを検索します。 モジュールは、各モジュールの読み込みアドレスとサイズに基づいて配置されます。 有効なモジュールが見つかった場合、 ModuleInfo パラメーターにはモジュールに関する情報が入力されます。

この関数で使用される IMAGEHLP_MODULE64 構造体のサイズは、長年にわたって変化しています。 呼び出し元のコードのコンパイルに使用された DbgHelp.h より古いバージョンの DbgHelp.dll が呼び出された場合、この関数は エラー コード ERROR_INVALID_PARAMETERで失敗する可能性があります。 これは、システム バージョン (%WinDir%\System32\DbgHelp.dll) が呼び出されたときに最も一般的に発生します。 システム バージョンの DbgHelp.dll を呼び出すコードは、その Windows リリースに適した SDK または以前のリリースの SDK を使用してコンパイルする必要があります。

推奨されるモデルは、呼び出し元ソフトウェアと共に必要なバージョンの DbgHelp.dll を再配布することです。 これにより、呼び出し元は最も堅牢なバージョンの DbgHelp.dll を使用し、アップグレードを簡略化できます。 最新バージョンの DbgHelp.dll は、常に Windows 用デバッグ ツール パッケージにあります。 一般的なルールとして、古いバージョンで動作するようにコンパイルされたコードは、常に新しいバージョンで動作します。

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

この関数の Unicode バージョンを呼び出すには、DBGHELP_TRANSLATE_TCHARを定義 しますSymGetModuleInfoW64 は、DbgHelp.h で次のように定義されています。


BOOL
IMAGEAPI
SymGetModuleInfoW64(
    __in HANDLE hProcess,
    __in DWORD64 qwAddr,
    __out PIMAGEHLP_MODULEW64 ModuleInfo
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetModuleInfo64   SymGetModuleInfoW64
#endif

この関数は SymGetModuleInfo 関数よりも優先されます。 詳細については、「 プラットフォーム サポートの更新」を参照してください。 SymGetModuleInfo は、DbgHelp.h で次のように定義されています。

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetModuleInfo   SymGetModuleInfo64
#define SymGetModuleInfoW  SymGetModuleInfoW64
#else
BOOL
IMAGEAPI
SymGetModuleInfo(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULE ModuleInfo
    );

BOOL
IMAGEAPI
SymGetModuleInfoW(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULEW ModuleInfo
    );
#endif

要件

   
対象プラットフォーム Windows
ヘッダー dbghelp.h
Library Dbghelp.lib
[DLL] Dbghelp.dll
再頒布可能パッケージ DbgHelp.dll 5.1 以降

関連項目

DbgHelp 関数

IMAGEHLP_MODULE64

SymInitialize

SymLoadModule64