Совместное использование файлового и прямого доступа к секторам
Файловый доступ и прямой доступ к секторам можно применять одновременно, если вы понимаете, как прямой доступ может повлиять на флеш-диск (и, возможно, испортить его).
В разделе Прямой доступ к секторам объясняется, что работа с флеш-секторами идёт через два буфера в RAM с номерами 0 и 1. От этих буферов зависит и работа самого флеш-диска.
Буфер 0 используется для обработки служебных данных и не хранит ценного содержимого, которое нужно сохранить после завершения одного дискового метода. То есть после выполнения такого метода, как fd.setdata, в буфере 0 нет ценных данных.
Буфер 1 служит для загрузки и хранения содержимого последнего загруженного (и, возможно, изменённого) сектора данных. Поэтому если недавно вызывался fd.setdata, в этом буфере могут оставаться новые данные, ещё не сохранённые во флеш-памяти. Порча этих несохранённых данных неприятно скажется на файле. Чтобы этого не случилось, объект fd автоматически размонтирует диск (устанавливает fd.ready = 0 - NO), если приложение выполняет fd.setbuffer или fd.getsector при fd.buffernum = 1, когда в этот буфер загружены новые, ещё не сохранённые данные сектора.
Избежать размонтирования диска просто. Можно работать с буфером RAM 0 (задать fd.buffernum = 0) или сбросить несохранённые данные вызовом fd.flush или fd.close.
Метод fd.setsector вызовет размонтирование диска, если адресат находится внутри области диска (секторы от 0 до fd.totalsize - 1). Запись за пределы области диска работе флеш-диска не мешает.
Метод fd.getbuffer никак не влияет на флеш-диск, поэтому его можно использовать свободно.
Метод fd.checksum записывает в буфер RAM (в режиме «PL_FD_CSUM_MODE_CALCULATE»), но контрольная сумма вычисляется тем же способом, что и на самом диске, поэтому установленная сумма никогда не будет неверной.
Наконец, учтите, что любой метод, связанный с файлами, меняет значение fd.buffernum. Никогда не считайте, что знаете, какое значение у этого свойства. Всегда задавайте его явно и каждый раз перед прямым доступом к секторам.