forras + bugfix
lukitTisztelt Clownfish!
Elkerhetem a dll aktualis forraskodjat? Az uw-n csak a regi van fent sajnos.
Nalam sajna mindig lefagy az ami, ha betoltom a dll-t, ennek probaltam utanajarni a regi verzioval (registry mokolas megvolt). Betettem egy log-olast a forrasba es megvilagosodtam: az EnumProc.cpp-ben a CProcessModuleIterator::First()-ben lehet egy kis gebasz, ott kerul vegtelen ciklusba a tortenet. A while cilus addig tart, amig az EnumProcessModules igaz visszateres utan beallitja az m_count-ot. Ha azonban az EnumProcessModules nem ad vissza igazt, azaz nem sikerult, akkor orokke ott ragad a program, mert az m_count-ba baromi nagy szam kerul. Javaslatom a hibajavitasra: while ciklus felesleges, az if igaz aga maradhat, a hamisat meg rendesen lekezelni, valahogy igy:
...
if (m_hProcess) {
DWORD nalloc = 1024;
del ete [] m_hModules;
m_hModules = new HMODULE [nalloc];
if (EnumProcessModules(m_hProcess, m_hModules, nalloc*sizeof(DWORD), &m_count))
{
m_count /= sizeof(HMODULE);
}
else
{
m_count = 0;
}
m_current = 0;
}
...
A Next() maradhat, az jol vegzi a dolgat, ha az m_count es m_current is 0. Mas reszeit nem neztem a programnak, hogy mi van ebben az esetben, annyira nem latom meg at.
Amugy nalam a 4-es pid-u System process-nel adott vissza a EnumProcessModules hamisat.
Tisztelettel: lukit