Конференция "WinAPI" » Получить содержимое заблокированного файла [D7, WinXP]
 
  • rainbow_d (28.10.07 23:33) [0]
    Суть проблемы. Создается пустой файл, после чего доступ к файлу блокируется на уровне ОС и производится запись данных, а за тем файл закрывается, через какое-то время с него снимается блоикировка и он удаляется..

    Каким образом можно получить содержимое этого файла после записи в него данных?

    Перепробовал все, что только можно..Пробовал делать copyfile при обновлении даты последнего изменения, пробовал постоянно получать к файлу доступ и копировать в случае, если он получен. пробовал вычислять размер файла и копировать его, если размер больше 0 кб.  Ничего не помогло, или получаю пустой файл или программа виснет :(
  • Andrey_rus © (29.10.07 02:57) [1]
    Удалено модератором
  • Германн © (29.10.07 03:05) [2]
    Удалено модератором
  • vpbar © (29.10.07 08:32) [3]
    Удалено модератором
  • Игорь Шевченко © (29.10.07 10:55) [4]

    > Каким образом можно получить содержимое этого файла после
    > записи в него данных?


    ReadDirectoryChangesW не поможет ?
  • MetalFan © (01.11.07 09:50) [5]
    пиши драйвер... и/или лезь в Ring0... по другому имхо до файла не достать...
  • Riply © (01.11.07 10:07) [6]
    > [5] MetalFan ©   (01.11.07 09:50)
    > пиши драйвер... и/или лезь в Ring0... по другому имхо до файла не достать...
    Достать-то можно. Вот только стоит ли овчинка выделки ? :)
  • apic (01.11.07 12:59) [7]
    Ни какой драйвер нафик писать не надо. Есть исходник на wasm.ru, только на Си. Кто умеет переделывать с Си на Делфи у того нет проблем. Модуль тоже скачать в инете можно (сказать, что в делфи по сравнению Си нет некоторых модулей - вообще промолчать). Я пробывал написать что-то подобное и модуль скачал и дополнил его, но исходник толком не перевел на делфи (с Си у меня огромные проблемы) и бросил я это дело. А вообще с железом ВСЕ можно делать с помощью функции DeviceIoControl (особенно если дело касается дисковых устройств) и никакой Ring0 нафик не нужен, только примеров по работе с DeviceIoControl нигде найти не возможно. С помощью этой функции пишутся дифрагментаторы, программы для копирования защищенных или программно заблокированных файлов, у меня лично есть примерчик блокировки CD-ROM'а и т.д. и т.п.
  • tesseract © (01.11.07 13:32) [8]

    > А вообще с железом ВСЕ можно делать с помощью функции DeviceIoControl
    > (особенно если дело касается дисковых устройств


    С данными на дисках работают через CreateFile. DeviceIoControl служит для посылки драйверу команд. У каждого драйвера они свои, так что фанатеть по ней не стоит.


    >  С помощью этой функции пишутся дифрагментаторы, программы
    > для копирования защищенных или программно заблокированных
    > файлов,


    А чего  его сразу не через int21 ? Дефрагментаторы для Windows 2k+  пишуться через API Windows.
  • Riply © (01.11.07 21:20) [9]
    > [7] apic   (01.11.07 12:59)
    > только примеров по работе с DeviceIoControl нигде найти не возможно.
    А самому написать ? Там на каждую команду две, ну три строчки :)
    И ничего сложного. Почти все команды документированы и есть в Help`е.
    Функция ReadFile на порядок сложнее. :)

    >С помощью этой функции пишутся дифрагментаторы,
    >программы для копирования защищенных или программно заблокированных файлов,

    Ты бы хоть "imho", а то некоторые могут воспрнять подобные утверждения за чистую монету :)
    Как ты с ее помощью собрался прочитать файл, который не открыть даже с FILE_ANY_ACCESS ?
    А без Handle`а этого файла, тебе никакая DeviceIoControl не поможет.
    Вытаскивать Handle из чужого процесса и "дупликатить" его врядли тебе позволят,
    если уж позаботились о блокировке файла (уж не говоря о том, что этого Handle`а там может и не быть).
  • Leonid Troyanovsky © (01.11.07 21:32) [10]

    > Riply ©   (01.11.07 21:20) [9]

    > Вытаскивать Handle из чужого процесса и "дупликатить" его
    > врядли тебе позволят

    Необязательно вытаскивать оттуда хендл файла,
    достаточно хендла его проекции только для чтения .

    --
    Regards, LVT.
  • Riply © (01.11.07 22:18) [11]
    >[10] Leonid Troyanovsky ©   (01.11.07 21:32)
    > Необязательно вытаскивать оттуда хендл файла,
    > достаточно хендла его проекции только для чтения .

    Sorry... Поторопилась. :)
 
Конференция "WinAPI" » Получить содержимое заблокированного файла [D7, WinXP]
Есть новые Нет новых   [120365   +49][b:0][p:0]