GetModuleInformation モジュール情報の取得

Cの宣言:

BOOL GetModuleInformation(
	HANDLE hProcess,
	HMODULE hModule,
	LPMODULEINFO ModuleInfo,
	DWORD ModuleInfoSize);

説明:

hProcessで指定したプロセスがロードしている、hModuleで指定されたモジュールの情報を取得し、結果をModInfoに返す。

引数の意味は以下の通り。
hProcess (IN) 情報の取得元のプロセスのハンドル。
hModule (IN) 情報の取得元のモジュールのハンドル。
ModuleInfo (OUT) 取得結果のモジュールの情報。
ModuleInfoSize (IN) ModuleInfoのサイズ。

戻り値は、関数の実行に成功したか否かを表す真偽値である。

Cのサンプル:

呼び出し元プロセスがロードしている全てのモジュールを列挙し、各々のモジュールの情報を表示する。
/* 現在のプロセスがロードしているモジュールの情報を表示 */
void DispModuleInfos()
{
	HANDLE hProcess;
	HMODULE ModuleHandles[1000];
	DWORD ModuleNum;
	DWORD ReturnSize;
	char FileName[1000];
	MODULEINFO ModInfo;
	DWORD i;
	
	/* 現在のプロセスのハンドルを取得 */
	hProcess = GetCurrentProcess();

	/* 現在のプロセスにロードされているモジュールの一覧と数を取得 */
	EnumProcessModules(hProcess, ModuleHandles, sizeof(ModuleHandles), &ReturnSize);
	ModuleNum = ReturnSize / sizeof(HMODULE);

	/* 各モジュールの情報を表示 */
	for(i=0; i<ModuleNum; i++) {
		/* モジュールのファイル名と情報を取得 */
		GetModuleFileName(ModuleHandles[i], FileName, 1000);
		GetModuleInformation(hProcess, ModuleHandles[i], &ModInfo, sizeof(ModInfo));

		/* 結果を表示 */
		printf("ファイル名: %s\n", FileName);
		printf("\tロードアドレス: %p\n", ModInfo.lpBaseOfDll);
		printf("\tサイズ: %08X\n", ModInfo.SizeOfImage);
		printf("\tエントリポイント: %p\n", ModInfo.EntryPoint);
		printf("\n");
	}
}


(original text:1999/01/06 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。