/// <summary>
/// 模块遍历
/// </summary>
/// <param name="dwProcessId">进程PID</param>
/// <returns></returns>
BOOL EnumProcessModule(DWORD dwProcessId)
{
MODULEENTRY32 me32 = { 0 };
me32.dwSize = sizeof(MODULEENTRY32);
HANDLE hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId); // 获取指定进程全部模块的快照
if (INVALID_HANDLE_VALUE == hModuleSnap)
{
ShowError(L"CreateToolhelp32Snapshot");
return FALSE;
}
BOOL bRet = ::Module32First(hModuleSnap, &me32);// 获取快照中第一条信息
while (bRet)
{
printf("[%d]\t", me32.th32ProcessID);// 显示 Process ID
printf("[0x%p]\t", me32.modBaseAddr);// 显示 模块加载基址
printf("[%s]\n", me32.szModule);// 显示 模块名称
bRet = ::Module32Next(hModuleSnap, &me32); // 获取快照中下一条信息
}
::CloseHandle(hModuleSnap);// 关闭句柄
return TRUE;
}