Как открыть занятый файл?

Тема в разделе "WASM.WIN32", создана пользователем Stariy, 10 окт 2009.

  1. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Ситуация такая - под Windows Mobile 5-6 нужно открывать для чтения некоторые файлы *.vol. Часть файлов успешно открывается, часть не хочет. Поиск в инете дал вот такую инфу:
    "EDB не позволяет одновременно из нескольких процессов обращаться к одному тому базы данных, что ранее было доступно для CEDB баз. То есть если у Вас есть база, которую уже открыл один процесс, то другие все получат ACCESS_DENIED."
    Отсюда возникает вопрос - а можно ли по имени файла узнать, каким процессом он открыт, грохнуть этот процесс, поработать с файлом, запустить опять грохнутый поцесс? Или, быть может, возможно как то по другому решить проблему?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    дело в том, что если вы просто убьете процесс, который производил запись в файл, файл скорее всего будет поврежден... если процесс производил чтение, то от его закрытия файл не испортится, но скорее всего дескриптор не будет закрыт, то есть файл останется как-будто занятым... это все актуально для windows, про windows mobile особо не в курсе, но думаю, что там будет так же... я бы наверное стал бы внедрять код, который приостановить поток и закроет файл, но это довольно сложно реализуемо... может кто-нибудь скажет вариант попроще)))
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    к тому же ACCESS_DENIED не всегда происходит из-за занятости файла другим процессом, может причина в другом?
     
  4. bendme

    bendme New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    179
    если процесс производил чтение, то от его закрытия файл не испортится, но скорее всего дескриптор не будет закрыт, то есть файл останется как-будто занятым
    -------------------------------------------------------------
    Не правда
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Rel
    Это откуда такое взялось? Всю жизнь юзаю wholockme + TerminateProcess для неугодных программ и никогда такого не было. Винда ж освобождает за процессом все ресурсы, что он навыделял.
     
  6. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Хм... А какие еще могут быть причины? Ну недоступность носителя можно не рассматривать...
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Нет прав.
     
  8. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Когда файл занят другим процесом, возникает ошибка sharing violation, а не access denied.
     
  9. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    А на фат32 разве бывают права? До сих пор мне попадались машинки только с FAT32, а там вроде бы с правами все просто...