Доброго времни суток всем!
Ситуация такова: в отдельном потоке запускается некая экспортируемая функция, которая создаёт файл и пишет туда данные. И так как процесс длительный, то хотелось бы считывать данные из этого файла динамично. Но проблема в том, что эта экспортируемая функция создает этот файл без права на доступ для других приложений.
Подскажите плз как получить доступ на чтение к заблокированному другим приложением файлу?
Здравствуйте, Maniak2k, Вы писали:
M>Доброго времни суток всем!
M>Ситуация такова: в отдельном потоке запускается некая экспортируемая функция, которая создаёт файл и пишет туда данные. И так как процесс длительный, то хотелось бы считывать данные из этого файла динамично. Но проблема в том, что эта экспортируемая функция создает этот файл без права на доступ для других приложений.
M>Подскажите плз как получить доступ на чтение к заблокированному другим приложением файлу?
Re[2]: Чтение и запись в заблокированый файлАвтор: Valerio
Дата: 31.10.03
... << RSDN@Home 1.1.3 beta 1 >>
Валерио подсказал, но это путь как мне кажется когда не сам открываешь файл, но если Вы сами его создаёте(открываете) можно же открыть с флагом DWORD dwShareMode равным FILE_SHARE_READ
Здравствуйте, Maniak2k, Вы писали:
M>Ситуация такова: в отдельном потоке запускается некая экспортируемая функция, которая создаёт файл и пишет туда данные. И так как процесс длительный, то хотелось бы считывать данные из этого файла динамично. Но проблема в том, что эта экспортируемая функция создает этот файл без права на доступ для других приложений.
поскольку дело прооисходит в твоем же процессе, то прочитав
эту статьюАвтор: Павел Блудов
Дата: 22.06.03
легко можно перехватить CreateFile/WriteFile и читать все что пишется в файл. если сама библиотека не импортирует WriteFile, то прийдется пробежаться по всему дереву импортируемых dll и подменить в них ф-цию. ведь в конечном итоге все всеравно должно упереться в CreateFile/WriteFile
еще, наверное, должна помочь detours, хотя я предпочитаю пользоваться упомянутой статьей, т.к. приведенное там решение работает не только на NT/2000