-
Суть проблемы. Создается пустой файл, после чего доступ к файлу блокируется на уровне ОС и производится запись данных, а за тем файл закрывается, через какое-то время с него снимается блоикировка и он удаляется..
Каким образом можно получить содержимое этого файла после записи в него данных?
Перепробовал все, что только можно..Пробовал делать copyfile при обновлении даты последнего изменения, пробовал постоянно получать к файлу доступ и копировать в случае, если он получен. пробовал вычислять размер файла и копировать его, если размер больше 0 кб. Ничего не помогло, или получаю пустой файл или программа виснет :(
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
> Каким образом можно получить содержимое этого файла после > записи в него данных?
ReadDirectoryChangesW не поможет ?
-
пиши драйвер... и/или лезь в Ring0... по другому имхо до файла не достать...
-
> [5] MetalFan © (01.11.07 09:50) > пиши драйвер... и/или лезь в Ring0... по другому имхо до файла не достать... Достать-то можно. Вот только стоит ли овчинка выделки ? :)
-
Ни какой драйвер нафик писать не надо. Есть исходник на wasm.ru, только на Си. Кто умеет переделывать с Си на Делфи у того нет проблем. Модуль тоже скачать в инете можно (сказать, что в делфи по сравнению Си нет некоторых модулей - вообще промолчать). Я пробывал написать что-то подобное и модуль скачал и дополнил его, но исходник толком не перевел на делфи (с Си у меня огромные проблемы) и бросил я это дело. А вообще с железом ВСЕ можно делать с помощью функции DeviceIoControl (особенно если дело касается дисковых устройств) и никакой Ring0 нафик не нужен, только примеров по работе с DeviceIoControl нигде найти не возможно. С помощью этой функции пишутся дифрагментаторы, программы для копирования защищенных или программно заблокированных файлов, у меня лично есть примерчик блокировки CD-ROM'а и т.д. и т.п.
-
> А вообще с железом ВСЕ можно делать с помощью функции DeviceIoControl > (особенно если дело касается дисковых устройств
С данными на дисках работают через CreateFile. DeviceIoControl служит для посылки драйверу команд. У каждого драйвера они свои, так что фанатеть по ней не стоит.
> С помощью этой функции пишутся дифрагментаторы, программы > для копирования защищенных или программно заблокированных > файлов,
А чего его сразу не через int21 ? Дефрагментаторы для Windows 2k+ пишуться через API Windows.
-
> [7] apic (01.11.07 12:59) > только примеров по работе с DeviceIoControl нигде найти не возможно. А самому написать ? Там на каждую команду две, ну три строчки :) И ничего сложного. Почти все команды документированы и есть в Help`е. Функция ReadFile на порядок сложнее. :)
>С помощью этой функции пишутся дифрагментаторы, >программы для копирования защищенных или программно заблокированных файлов,
Ты бы хоть "imho", а то некоторые могут воспрнять подобные утверждения за чистую монету :) Как ты с ее помощью собрался прочитать файл, который не открыть даже с FILE_ANY_ACCESS ? А без Handle`а этого файла, тебе никакая DeviceIoControl не поможет. Вытаскивать Handle из чужого процесса и "дупликатить" его врядли тебе позволят, если уж позаботились о блокировке файла (уж не говоря о том, что этого Handle`а там может и не быть).
-
> Riply © (01.11.07 21:20) [9]
> Вытаскивать Handle из чужого процесса и "дупликатить" его > врядли тебе позволят
Необязательно вытаскивать оттуда хендл файла, достаточно хендла его проекции только для чтения .
-- Regards, LVT.
-
>[10] Leonid Troyanovsky © (01.11.07 21:32) > Необязательно вытаскивать оттуда хендл файла, > достаточно хендла его проекции только для чтения .
Sorry... Поторопилась. :)
|