Ситуация такая - под Windows Mobile 5-6 нужно открывать для чтения некоторые файлы *.vol. Часть файлов успешно открывается, часть не хочет. Поиск в инете дал вот такую инфу: "EDB не позволяет одновременно из нескольких процессов обращаться к одному тому базы данных, что ранее было доступно для CEDB баз. То есть если у Вас есть база, которую уже открыл один процесс, то другие все получат ACCESS_DENIED." Отсюда возникает вопрос - а можно ли по имени файла узнать, каким процессом он открыт, грохнуть этот процесс, поработать с файлом, запустить опять грохнутый поцесс? Или, быть может, возможно как то по другому решить проблему?
дело в том, что если вы просто убьете процесс, который производил запись в файл, файл скорее всего будет поврежден... если процесс производил чтение, то от его закрытия файл не испортится, но скорее всего дескриптор не будет закрыт, то есть файл останется как-будто занятым... это все актуально для windows, про windows mobile особо не в курсе, но думаю, что там будет так же... я бы наверное стал бы внедрять код, который приостановить поток и закроет файл, но это довольно сложно реализуемо... может кто-нибудь скажет вариант попроще)))
к тому же ACCESS_DENIED не всегда происходит из-за занятости файла другим процессом, может причина в другом?
если процесс производил чтение, то от его закрытия файл не испортится, но скорее всего дескриптор не будет закрыт, то есть файл останется как-будто занятым ------------------------------------------------------------- Не правда
Rel Это откуда такое взялось? Всю жизнь юзаю wholockme + TerminateProcess для неугодных программ и никогда такого не было. Винда ж освобождает за процессом все ресурсы, что он навыделял.
А на фат32 разве бывают права? До сих пор мне попадались машинки только с FAT32, а там вроде бы с правами все просто...