Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непрерывная запись в файл


Страницы:   1 2 3 4

unknowing ©   (2008-02-11 18:52:00) 

Всем привет! У меня следующаяя проблема: с СОМ-порта непрерывно приходят данные, которые я записываю в файл. В случае остановки записи программой (CloseFile) или выхода из программы все нормально. Интересует ситуация когда пропадает питание и комп выключается: файл не записывается на диск... Как защищаться от такой ситуации?


unknowing   (2008-02-11 20:54:00) [21]


> Anatoly Podgoretsky ©   (11.02.08 20:49) [44]

У меня конкретная фс... Короче, кроме CloseFile,  я так понял, ничего путного нет.


Джо   (2008-02-11 20:52:00) [22]

Чтобы окончательно добить вопрос с FlushFileBuffers и MSDN, цитирую онлайн-версию:
Client Requires Windows Vista, Windows XP, or Windows 2000 Professional.
Теперь просьба к clickmaker'у указать свои источники цитирования ;)


Anatoly Podgoretsky   (2008-02-11 20:49:00) [23]

> unknowing  (11.02.2008 20:38:38)  [38]

Короче тебе все рассказали, остались только нюансы функционирования на разных ФС.


Джо   (2008-02-11 20:47:00) [24]

> [39] clickmaker ©   (11.02.08 20:39)
>
> > [36] Джо ©   (11.02.08 20:36)
>
> у тебя МСДН неправильный )
> есть она и в 98 и в 95 и даже в Win32s под win3.1 )

Какой есть, шел из комплекта VS 2008...


guav   (2008-02-11 20:45:00) [25]

> [0] unknowing   (11.02.08 18:52)

Не использовать кэши системы (FILE_FLAG_NO_BUFFERING, FILE_FLAG_WRITE_THROUGH). Писать посекторно или по много секторов, но целое число секторов, в конец каждого сектора пару байт сигнатуры, при чтении её проверять (сравнением с ожидаемым значением), при повторной записи в то же место - изменять. Не смешивать выделение места и запись - это разные операции.
Это используется в NTFS и в CLFS.

Есть специально для подобной задачи Common Log File System (CLFS)
http://msdn2.microsoft.com/en-us/library/bb986747(VS.85).aspx
Сам не использовал реально, только "игрался" с ней, но похоже, что то, что тебе нужно.
Но требуется 2003 сервер или виста.


ketmar   (2008-02-11 20:42:00) [26]

>[38] unknowing (2008-02-11 20:38:00)
тебе давно всё рассказали. идёшь и пробуешь.

---
Understanding is not required. Only obedience.


ketmar   (2008-02-11 20:42:00) [27]

>[37] clickmaker © (2008-02-11 20:37:00)
а то! правда, первый играет вечную музыку, а второй какую-то попсу по типу black magic woman. %-)

---
Understanding is not required. Only obedience.


clickmaker   (2008-02-11 20:39:00) [28]


> [36] Джо ©   (11.02.08 20:36)

у тебя МСДН неправильный )
есть она и в 98 и в 95 и даже в Win32s под win3.1 )


unknowing   (2008-02-11 20:38:00) [29]

Ребята, короче, с моим-то вопросом конкретно что?


clickmaker   (2008-02-11 20:37:00) [30]


> [35] ketmar ©   (11.02.08 20:33)
> >[34] clickmaker © (2008-02-11 20:30:00)
> >У ФАТ и НТФС охрененно много общего.
> физический носитель, например

ну дык. Булат Окуджава и Карлос Сантана - оба гитаристы o)


Джо   (2008-02-11 20:36:00) [31]

>
> [10] clickmaker ©   (11.02.08 19:32)
> ???
> Client Requires Windows XP, Windows 2000 Professional, Windows
> NT Workstation, Windows Me, Windows 98, or Windows 95.
>
> (c) MSDN

У меня написано так:
Client
Requires Windows Vista, Windows XP, or Windows 2000 Professional.


MSDN Build date: 8/15/2007


ketmar   (2008-02-11 20:33:00) [32]

>[34] clickmaker © (2008-02-11 20:30:00)
>У ФАТ и НТФС охрененно много общего.

физический носитель, например. %-)

---
Understanding is not required. Only obedience.


clickmaker   (2008-02-11 20:30:00) [33]

да-да. У ФАТ и НТФС охрененно много общего.
Вот тут Рипли нужна, она в курсе )


Anatoly Podgoretsky   (2008-02-11 20:28:00) [34]

> clickmaker  (11.02.2008 20:24:32)  [32]

Поведение конечно может различаться, но и общего много.
А WinMe я как то пропустил, не заметил.


clickmaker   (2008-02-11 20:24:00) [35]


> [31] Anatoly Podgoretsky ©   (11.02.08 20:21)

так Рипли по линолеуму не специализируется, вроде ж как?
она ж по MFT в NTFS )


Anatoly Podgoretsky   (2008-02-11 20:21:00) [36]

> clickmaker  (11.02.2008 20:15:28)  [28]

Тут Рипли нам нужна, расставить точки на И


unknowing   (2008-02-11 20:18:00) [37]


> Anatoly Podgoretsky ©   (11.02.08 20:13) [27]

Если на счет переделки программы имелась в виду моя программа, то место где производится запись одно, но вот только много с этим местом связано логических всяких штук и жуть как не хочется переделывать все..


clickmaker   (2008-02-11 20:17:00) [38]


> да причем тут журналирование?
> в вопросе даже про NTFS ни слова нет.

тем более, что [3]

> А ос - winME


clickmaker   (2008-02-11 20:15:00) [39]


> [27] Anatoly Podgoretsky ©   (11.02.08 20:13)
> > clickmaker  (11.02.2008 20:11:26)  [26]
>
> Журналирование

да причем тут журналирование?
в вопросе даже про NTFS ни слова нет.
Суть в том, что периодически промывая буфера, можно бОльшую часть сохранить. Что-то потеряется, но значительно меньше, чем если вообще не сбрасывать до вызова CloseFile


Anatoly Podgoretsky   (2008-02-11 20:13:00) [40]

> clickmaker  (11.02.2008 20:11:26)  [26]

Журналирование может испортить всю картину.

А насчет переделки программы, много ли мест, где производится запись, ничтожно мало.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо