> поточнее плиз. итак запускается А, он запускает В, затем А > внедряет в В некую длл, > которая проверяет в адресном пространстве В нечто и > принимает решение
если А и В поменять местами - то всё верно.... :)
> А который в свою очередь перезапускает В, снова внедряет в
В (который у Вас в данном случае А :) ) ничего не перезапускает. он сидит и ждёт, когда другой процесс будет запущен.
> событиями машину ребутнуть > то все Ок?
ребутить не обязательно. можно запустить несколько копий фотошопа, например, хорошо ещё помогает нечто вроде:
MEMORYSTATUS mst;
GlobalMemoryStatus(&mst);
PVOID pvMem = VirtualAlloc(NULL, mst.dwTotalPhys,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
ZeroMemory(pvMem, mst.dwTotalPhys);
VirtualFree(pvMem, NULL, MEM_RELEASE);
> в этом случае скорее всего речь идет о баге в длл,
как я уже говорил, в тестовой программе (да и в любой другой) после изменения её дебагером (по крайней мере, в секции с кодом, с данными не проверял), и последующего перезапуска - загрузится именно изменённая копия. т.е., если пофиксить условный переход в проверке вида
bool a = true;
if (a == true) return 2; else return 3; , то при следующем запуске (уже без отладчика) процедура вернёт 3.
так что не думаю, что речь идёт о баге в длл.
|