У меня есть компонент, который записывает свою структуру в файл. Проблема в том, что данные, которые он пишет, должны быть согласованы при любом сбое системы. Так что мне нужно физическое записывать данные. Проблема заключается в том, что у компонента нет такой опции и для создания функции файлового архива из данных компонента потребуется некоторое время и усложнит программу.FlushFileBuffers на уже написанном файле
Возникает вопрос: Если я написал данные с компонентом (например: ComponentX-> WriteToFile (имя файла)) можно затем использовать Handle = OpenFile (имя файла), а затем FlushFileBuffers (Handle), чтобы обеспечить согласованность данных ? Или этот трюк не сработает?
Я знаю, что это может сработать, потому что, возможно, в OpenFile система использует дескриптор, уже находящийся в кеше, и его очистка приведет к сохранению кэшированных данных из предыдущей операции (сохранение файла компонента), но я не уверен.
Если это не может работать, есть ли другой способ, а не делать данные из компонента моей личности (с CreateFile, ...)
Благодаря
Вы можете очистить весь объем. Также выполняется с помощью FlushFileBuffers(), используя ручку для тома. Непонятно, как вы надеетесь сделать это сразу после закрытия приложения. И кто-то проезжает шнур питания прямо между ними. Получите ИБП для реального (и быстрого) исправления. –
Спасибо, полный объем может быть медленным. Интервал сохранения данных - где-то в 5+ мин. ИБП не решит проблему, это не внутренняя программа, ее функция предназначена для решения этих проблем с резервным копированием для других. – Spider