BOOL GetModuleInformation( HANDLE hProcess, HMODULE hModule, LPMODULEINFO ModuleInfo, DWORD ModuleInfoSize);
引数の意味は以下の通り。
hProcess | (IN) | 情報の取得元のプロセスのハンドル。 |
hModule | (IN) | 情報の取得元のモジュールのハンドル。 |
ModuleInfo | (OUT) | 取得結果のモジュールの情報。 |
ModuleInfoSize | (IN) | ModuleInfoのサイズ。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
/* 現在のプロセスがロードしているモジュールの情報を表示 */ 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"); } }