Пишу программу, что-то вида базы данных. Если по простому, то она должна читать/писать по определенному смещению (допустим, первая запись, десятая), и — в хидер. Проблема в том, что это не атомарная операция, т.е. может быть так, что я пишу по смещению 0x200 (запись), а потом перехожу к хидеру (скажем, 0x800000 ), и в это время случается сбой. Первый WriteFile успешно завершится, а второй — нет. Как быть?
1. Пробовал маппинг, не вышло, там проблемы с секциями, выравниванием, в общем проще забить.
2. Транзакции — мс не рекомендует их в ОС выше восьмерки, как понимаю уберут в ядро или вообще.
3. Писать во временный файл и потом replacefile — база огромная, да и накладно ради 1 операции копировать туда сюда много данных.