Использование файловой системы ROMFS (высокоуровневый API fs.h)

API определен в заголовочном файле sysroot-*-kos/include/kos/fs.h из состава KasperskyOS SDK.

API предназначен для работы с файловой системой ROMFS, управляемой ядром KasperskyOS или системной программой FSUsr (но не VFS).

API fs.h является устаревшим, поэтому вместо него рекомендуется использовать API romfs.h.

Сведения о функциях API приведены в таблице ниже.

Библиотека libkos также предоставляет низкоуровневый API для использования файловой системы ROMFS. Низкоуровневый API следует использовать, если недостаточно возможностей высокоуровневого API.

Выбор службы файловой системы

Процесс может использовать службу файловой системы ROMFS, предоставляемую ядром или системной программой FSUsr. Подробнее см. "Использование файловой системы ROMFS (низкоуровневый API fs_api.h)".

Открытие файла

Чтобы открыть файл, нужно вызвать функцию KosOpenFile(), указав имя файла через параметр fname.

Чтение данных из файла

Чтобы выполнить чтение данных из файла, нужно использовать функцию KosLoadFileToBuf(), KosReadFileRaw() или KosReadFile().

Функция KosLoadFileToBuf() принимает через свой входной параметр path указатель на имя файла, поэтому не требуется предварительно открывать файл. Эта функция создает буфер и копирует в него весь файл. После использования этот буфер нужно удалить вызовом функции KosMemFree() из API alloc.h.

Функция KosReadFileRaw() выполняет чтение, начиная с заданного смещения относительно начала файла. Функция KosReadFile() выполняет чтение, начиная с текущего положения курсора. Сразу после открытия файла курсор имеет нулевое смещение относительно начала файла. Функция KosReadFileRaw() не учитывает и не изменяет положение курсора. Повторный вызов функции KosReadFileRaw() с теме же параметрами выполнит чтение из той же части файла. Функция KosReadFile() учитывает положение курсора и смещает курсор к концу файла на размер считанных данных. Повторный вызов функции KosReadFile() с теме же параметрами выполнит чтение уже из другой части файла, которая следует за считанной предыдущим вызовом.

Чтобы получить положение курсора (смещение курсора относительно начала файла), нужно вызвать функцию KosGetFilePos().

Чтобы установить требуемое положение курсора, нужно вызвать функцию KosSeekFile(). В качестве базы для установки курсора можно использовать начало файла, текущее положение курсора или конец файла. Если базой является начало файла, нужно указать положительное смещение. Если базой является текущее положение курсора, нужно указать положительное или отрицательное смещение. Если базой является конец файла, нужно указать отрицательное смещение. Требуемое положение курсора не должно выходить за границы файла.

Получение размера файла

Чтобы получить размер файла, нужно вызвать функцию KosGetFileSize().

Закрытие файла

Чтобы закрыть файл, нужно вызвать функцию KosCloseFile().

Сведения о функциях API

Функции fs.h

Функция

Сведения о функции

KosOpenFile()

Назначение

Открывает файл.

Параметры

  • [in] fname – указатель на имя файла.

Возвращаемые значения

В случае успеха возвращает идентификатор файла, иначе возвращает RTL_NULL.

KosReadFileRaw()

Назначение

Читает данные из файла, начиная с заданного смещения.

Параметры

  • [in] file – идентификатор файла.
  • [out] buffer – указатель на буфер для считанных данных.
  • [in] size – размер буфера, заданного через параметр buffer, в байтах.
  • [in] offset – смещение (относительно начала файла), с которого нужно начать чтение, в байтах.

Возвращаемые значения

В случае успеха возвращает размер считанных данных в байтах, иначе возвращает 0.

KosReadFile()

Назначение

Читает данные из файла, начиная с текущего положения курсора.

Параметры

  • [in] file – идентификатор файла.
  • [out] buffer – указатель на буфер для считанных данных.
  • [in] size – размер буфера, заданного через параметр buffer, в байтах.

Возвращаемые значения

В случае успеха возвращает размер считанных данных в байтах, иначе возвращает 0.

KosGetFileSize()

Назначение

Позволяет получить размер файла.

Параметры

  • [in] file – идентификатор файла.

Возвращаемые значения

В случае успеха возвращает размер файла в байтах.

Если возвращает 0, то это свидетельствует либо о нулевом размере файла, либо об ошибке.

KosGetFilePos()

Назначение

Позволяет получить положение курсора.

Параметры

  • [in] file – идентификатор файла.

Возвращаемые значения

Положение курсора (смещение курсора относительно начала файла) в байтах.

KosSeekFile()

Назначение

Устанавливает положение курсора.

Параметры

  • [in] file – идентификатор файла.
  • [in] offset – смещение курсора относительно базы, заданной в параметре origin, в байтах.
  • [in] origin – база для установки положения курсора: начало файла (SEEK_SET), текущее положение курсора (SEEK_CUR), конец файла (SEEK_END).

Возвращаемые значения

В случае успеха возвращает положение курсора (смещение курсора относительно начала файла) в байтах.

Если возвращает 0, то это свидетельствует либо об установке нулевого смещения курсора, либо об ошибке, при которой положение курсора, заданное параметрами offset и origin, находится за границами файла. При возникновении такой ошибки текущее положение курсора не изменяется.

KosCloseFile()

Назначение

Закрывает файл.

Параметры

  • [in] file – идентификатор файла.

Возвращаемые значения

Нет.

KosLoadFileToBuf()

Назначение

Создает буфер и копирует в него файл.

Параметры

  • [in] path – указатель на имя файла.
  • [out] fileBuf – указатель на адрес буфера с данными из файла.
  • [out] fileSize – указатель на размер файла в байтах.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

В начало