Отсаживание удаляемых файлов через перхват. Что посоветуете?

Тема в разделе "WASM.BEGINNERS", создана пользователем coocky, 20 апр 2007.

  1. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Привет.Есть такая проблема. Нужно отсадить удаляяемые файлы. Для этого использую перехват. Так во получается такая трабла. Вот пример
    Есть моя функци перехватчик (все условно)

    [ccode]
    Perehvat ()
    {
    // Отправляю своему процессу путь удаляемого файла

    //возращаю Ок, если смог остадить или оригинальный обработчик, если не смог
    }
    [/ccode]
    Функция-приемник в моем процессе.

    [ccode]
    Priem ()
    {
    // делаю MoveFile (source,destination) в пределах одного тома
    // делаю CopyFile (destination,destination2);
    }
    [/ccode]

    Так вот какая трабла MoveFile в пределах одного файла проходит нормально, а вот CopyFile выдает The process cannot access the file because it is being used by another process.
    НО! Стоит мне выйти из функции Perehvat (), как все происходит нормально. Что посоветуете? Как можно все это организовать. Просто CopyFile будет происходит в отдельном потоке. Это делается для того, что б увеличить производительность. И без него никак.
     
  2. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Хорошо. Пробывал закрыть сразу хендл в перехвате удаления файла. Конечно происходит ошибка после возврата из функции, но файл спокойно копируется. Ребята, тогда подскажите, я начал перехватывать ZwOpenFile . чтоб найти флаги доступа для открытия перед удалением и заменить их на нужные. Не подскажите, какие флаги нужно установить и каких параметров, чтоб файл мог копироваться другим процесом. Спасибо.
     
  3. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Только что посмотрел перехват ZwOpenFile Приходит флаг OBJ_VALID_ATTRIBUTES. А что это за флаг?