BOOL EnumProcessModules( HANDLE hProcess, HMODULE *ModuleHandles, DWORD ModuleHandleSize, LPDWORD ReturnSize);
引数の意味は以下の通り。
| hProcess | (IN) | 列挙元のプロセスのハンドル。 |
| ModuleHandles | (OUT) | 列挙されたモジュールハンドルの配列。 |
| ModuleHandleSize | (IN) | ModuleHandlesのサイズ。 |
| ReturnSize | (OUT) | ModuleHandlesに設定されたデータのサイズ、または必要なサイズ。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
/* 現在のプロセスのがロードしているモジュールの一覧を表示 */
void DispModules()
{
HANDLE hProcess;
HMODULE ModuleHandles[1000];
DWORD ModuleNum;
DWORD ReturnSize;
char BaseName[1000];
char FileName[1000];
DWORD i;
/* 現在のプロセスのハンドルを取得 */
hProcess = GetCurrentProcess();
/* 現在のプロセスにロードされているモジュールのハンドルと数を取得 */
EnumProcessModules(hProcess, ModuleHandles, sizeof(ModuleHandles), &ReturnSize);
ModuleNum = ReturnSize / sizeof(HMODULE);
/* 結果の表示 */
for(i=0; i<ModuleNum; i++) {
/* ベース名およびファイル名を取得 */
GetModuleBaseName(hProcess, ModuleHandles[i], BaseName, 1000);
GetModuleFileName(ModuleHandles[i], FileName, 1000);
/* ベース名およびファイル名の表示 */
printf("ベース名: '%s', ファイル名: '%s'\n", BaseName, FileName);
}
}