![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как закрыть файл отображенный в память после зависания? [D6, WinXP]
DVM © (2003-09-10 17:24:00)
Вопрос вот в чем. Есть программа, есть хук в длл. Программа и длл общаются посредством Memory Mapped File. Проблема в том, что после зависания или насильственного убиения программы общаться с dll через файл она не может, т.к. не может его создать/открыть, потому что старый уже существует (мое предположение). Вобщем не работает.
Нет ли способа закрыть такой файл, если известно только его имя?
Игорь Шевченко (2003-09-10 18:25:00) [1]
Никак. Он же во владении чужого процесса. При выгрузке DLL, если она скажет CloseHandle, он и закроется. Ты можешь запустить свою программу заново, и создать этот файл (разумеется, с именем). Если вернет ошибку ERROR_ALREADY_EXISTS, то продолжай с ним работать
DVM (2003-09-10 18:19:00) [2]
> Подробнее на эту тему ? DLL в чужом процессе открывает файл
> ?
Да. Открывает или создает. Зависит от его текущего состояния.
> Morfein © (10.09.03 17:49) [2]
> Этот файл перестаёт существовать после закрытия родительского
> процесса.
Это я знаю. Но при "вылете" процесса файл тоже закрывается? А тот файл с которым работает длл как закрыть?
Morfein (2003-09-10 17:49:00) [3]
Этот файл перестаёт существовать после закрытия родительского процесса.
Игорь Шевченко (2003-09-10 17:33:00) [4]
> Проблема в том, что после зависания или насильственного
> убиения программы общаться с dll через файл она не может,
> т.к. не может его создать/открыть
Подробнее на эту тему ? DLL в чужом процессе открывает файл ?