Назначение и структура библиотеки
Динамическая библиотека FSERVDLL.DLL предназначена для обеспечения выполнения базовых функций по упаковке, распаковке, анализу и проверке файлов почтовой корреспонденции (ФПК).
FSERVDLL.DLL является составной частью программного комплекса «Электронная почта FossDocMail» и может быть использована для разработки FossDocMail- совместимых приложений.
Выбор динамической компоновки библиотеки обусловлен необходимостью организации интерфейса с ЭП FossDocMail для прикладных программ, написанных с использованием различных систем программирования (Visual C++, Delphi, FSHELL и других).
FSERVDLL.DLL является многопоточной библиотекой. Вызов любой функции библиотеки привязан к предварительно распределенному блоку управления ФПК (БУП ФПК). Создание блока управления ФПК производится с помощью функции fpk_alloc, а освобождение блока управления — с помощью функции fpk_free.
Для одновременной работы с несколькими ФПК в разных потоках прикладной программы резервируется пул адресов блоков управления (1024 в данной версии). Во время загрузки библиотеки производится подготовка пула адресов и инициализация критической секции, необходимой для корректного размещения очередного адреса блока управления ФПК в пуле. Во время выгрузки библиотеки критическая секция удаляется.
Схема вызова функций
Для использования функций библиотеки в программах на Visual C++ необходимо определить тип FPKAPI и указать прототипы нужных функций.
define FPKAPI extern «C» __declspec(dllimport)
FPKAPI int fpk_alloc (void);
FPKAPI int fpk_free (int i);
Для использования функций библиотеки в программах на Delphi необходимо указать прототипы функций:
function fpk_alloc: Integer; cdecl; external ‘fservdll.dll’;
function fpk_free( fhand: Integer ): Integer; cdecl; external ‘fservdll.dll’;
Для использования функций библиотеки в FSHELL — программах необходимо указать прототипы функций:
fpkdll := «fservdll.dll»
_import(«_fpk_alloc», fpkdll, 0)
_import(«_fpk_free», fpkdll, 1)
При использовании FSHELL возможен альтернативный вариант указания импортируемых функций:
#import _fpk_alloc fservdll.dll 0
#import _fpk_free fservdll.dll 1
Перед вызовом любой функции следует распределить блок управления ФПК и получить дескриптор блока управления ФПК (ДБУП ФПК). После этого можно производить обработку ФПК с помощью библиотечных функций. Первым параметром вызова (кроме u_makechain) любой функции является номер дескриптора блока управления. В конце работы следует освободить блок управления.
ПРИМЕР (FSHELL)
fh := _fpk_alloc() // распределить блок управления
// здесь можно обрабатывать ФПК
_fpk_free(fh) // освободить блок управления
Описание функций
Замечание: Название каждой функции библиотеки включает префикс, указывающий на ее назначение. В данной версии используются следующие префиксы:
fpk_ — общие функции работы с ФПК;
u_ — вспомогательные функции;
env_ — функции работы с конвертом ФПК;
flist_ — функции работы со списком файлов ФПК.
FPKAPI int u_makechain (const char* p_dir)
ОПИСАНИЕ
Cоздание каталога со всеми промежуточными каталогами
ПАРАМЕТРЫ
p_dir — путь каталога
КОД ВОЗВРАТА
0 — нормальное завершение (всегда)
ЗАМЕЧАНИЯ
Может вызываться вне контекста открытия ФПК. Можно указывать не полностью описанный путь, нужный каталог будет создаваться в текущем.
FPKAPI char* u_uniqname (int i, const char* p_fmask)
ОПИСАНИЕ
Генерация уникального имени файла ФПК по маске
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_fmask — маска длиной до 12 символов, в которой знаками вопроса (‘?’) указаны позиции случайно генерируемых символов
КОД ВОЗВРАТА
— адрес буфера с полученным уникальным именем
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Генерируется короткое имя файла (8 символов — имя, 3 — расширение)
FPKAPI char* u_genIN (int i, const char* p_pn)
ОПИСАНИЕ
Генерация уникального идентификатора ФПК по маске
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_pn — символьный префикс уникального идентификатора
КОД ВОЗВРАТА
— адрес буфера с полученным уникальным идентификатором
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_setfpkdir (int i, char* p_dir)
ОПИСАНИЕ
Указать каталог для ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_dir — путь каталога
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
В том случае, если указанный каталог не существует, он будет создан. В случае использования указанного каталога для упаковки ФПК производится проверка существования подкаталога «.tmp». В случае его отсутствия он будет создан.
FPKAPI int fpk_setfildir (int i, char* p_dir)
ОПИСАНИЕ
Указать каталог для файлов
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_dir — путь каталога
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
В том случае, если указанный каталог не существует, он будет создан.
FPKAPI int fpk_settmpdir (int i, char* p_dir)
ОПИСАНИЕ
Указать временный каталог
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_dir — путь каталога
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
В том случае, если указанный каталог не существует, он будет создан.
FPKAPI int fpk_setbaddir (int i, char* p_dir)
ОПИСАНИЕ
Указать каталог для испорченых ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_dir — путь каталога
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
В том случае, если указанный каталог не существует, он будет создан.
FPKAPI int fpk_alloc (void)
ОПИСАНИЕ
Создать блок управления ФПК
ПАРАМЕТРЫ
КОД ВОЗВРАТА
— дескриптор блока управления ФПК
FPKAPI int fpk_duplicate (int p_sourcehandle, char* p_fpknew)
ОПИСАНИЕ
Cоздать копию файла ФПК и копию блока управления ФПК
ПАРАМЕТРЫ
p_sourcehandle — дескриптор блока управления ФПК
p_fpknew — имя файла — копии ФПК
КОД ВОЗВРАТА
— дескриптор нового блока управления ФПК
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_copy (int p_dest, int p_source)
ОПИСАНИЕ
Создать копию блока управления ФПК
ПАРАМЕТРЫ
p_dest — дескриптор копии блока управления
p_source — дескриптор исходного блока управления
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_free (int i)
ОПИСАНИЕ
освободить блок управления ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_open (int i)
ОПИСАНИЕ
Открыть ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
— дескриптор (в контексте функции open) открытого файла ФПК
-1 — ошибка доступа к блоку управления ФПК
-1 — не определено имя файла ФПК
-2 — не удается открыть файл ФПК
-3 — ошибка функции fdopen
FPKAPI int fpk_close (int i)
ОПИСАНИЕ
закрыть ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
-1 — файл ФПК не был открыт
1 — ошибка функции fclose
2 — ошибка функции close
FPKAPI int fpk_get_sign (int i)
ОПИСАНИЕ
Определить сигнатуру ФПК, загрузить контрольную сумму ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
2 — ошибка чтения сигнатуры
3 — неправильная сигнатура
ЗАМЕЧАНИЯ
ФПК должен быть предварительно открыт функцией fpk_open.
FPKAPI int fpk_load (int i)
ОПИСАНИЕ
Загрузить ФПК (ФПК должен быть предварительно открыт функцией fpk_open.)
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
5 — ошибка контрольной суммы информационной части ФПК
100 — ошибка readEnv
13 — ошибка контрольной суммы конверта ФПК
FPKAPI int fpk_load_ex (int i, char* p_fpkname)
ОПИСАНИЕ
Открытие, загрузка и закрытие ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_fpkname — имя файла ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
-3 — ошибка открытия ФПК
-2 — ошибка чтения сигнатуры
5 — ошибка контрольной суммы информационной части ФПК
100 — ошибка readEnv ???
13 — ошибка контрольной суммы конверта ФПК
ЗАМЕЧАНИЯ
После завершения работы функции файл закрывается.
FPKAPI int fpk_check (int i)
ОПИСАНИЕ
Проверка целостности ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
14 — файл открыт другим приложением
15 — слишком много открытых файлов
1 — файл не найден (либо другая ошибка файловой системы)
2 — ошибка чтения сигнатуры
3 — неправильная сигнатура
5 — ошибка контрольной суммы информационной части ФПК
12 — ошибка чтения ФПК
13 — ошибка контрольной суммы конверта ФПК
FPKAPI int fpk_clear (int i)
ОПИСАНИЕ
Сброс внутренних переменных ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_setname (int i, char* p_fpkname)
ОПИСАНИЕ
Задать имя ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_fpkname — имя файла ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Эта функция используется для указания имени обрабатываемого ФПК, например перед функцией fpk_load.
// m_mode = UNPACK
FPKAPI char* fpk_lastname (int i)
ОПИСАНИЕ
Определить имя ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
— указатель на строку, содержащую имя ФПК
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_setmode (int i, int p_mode)
ОПИСАНИЕ
Установка режима обработки ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_mode — режим обработки
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Пока предусмотрены два режима:
0x0 — распаковка файлов с короткими именами
0x1 — распаковка файлов с длинными именами (умолчание).
Режим 0x1 можно включать при трудностях с распаковкой файлов на сервера Novell Netware без установленной поддержки длинных имен.
FPKAPI const char ResolveAddress(const char box, const char* host)
ОПИСАНИЕ
Получить от службы Dic_NBU_FDM_Service для четырехбуквенного адреса, соответствующий адрес в формате X400.
В случае невозможности получения либо ошибки возвращается нулевой указатель.
ПАРАМЕТРЫ
box — имя ящика
host — имя хоста
ВОЗВРАТ
Указатель на строку адреса. Указатель действителен до следующего вызова данной функции.
0 — ошибка
FPKAPI int fpk_pack (int i)
ОПИСАНИЕ
Упаковать ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
11 — ошибка создания каталога «.tmp»
1 — файл ФПК с заданным именем уже существует
14 — ошибка доступа
16 — слишком много открытых файлов (файл ФПК)
4 — ошибка ввода — вывода (файл ФПК)
14 — ошибка доступа (упаковываемый файл) (файл ФПК)
16 — слишком много открытых файлов (упаковываемый файл)
4 — ошибка ввода — вывода (упаковываемый файл)
3 — ошибка read
5 — ошибка write
-1 — ошибка unlink
13 — ошибка доступа rename (EACCES)
2 — ошибка доступа rename (ENOENT)
FPKAPI int fpk_unpack (int i)
ОПИСАНИЕ
Открыть файл ФПК. распаковать, закрыть файл ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
14 — файл открыт другим приложением
15 — слишком много открытых файлов
1 — файл не найден (либо другая ошибка файловой системы)
2 — ошибка чтения сигнатуры
3 — неправильная сигнатура
5 — ошибка контрольной суммы информационной части ФПК
100 — ошибка readEnv ???
13 — ошибка контрольной суммы конверта ФПК
ЗАМЕЧАНИЯ
Распаковываются все файлы, входящие в состав ФПК. Формируется новое имя при конфликте имен.
СМОТРИ ТАКЖЕ:
fpk_unpackfile
FPKAPI char* fpk_unpackfile_ex(int i, int index, unsigned long flag)
ОПИСАНИЕ
Распаковать файл из ФПК по индексу
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
index — индекс файла
flag — флаги распаковки
0: по умолчанию (распаковка файла с длинным именем)
1: распаковка файла с коротким именем
КОД ВОЗВРАТА
NULL — ошибка распаковки иначе — указатель на строку содержащую путь + имя распакованного файла
FPKAPI int fpk_unpackl (int i)
см. FPKAPI int fpk_unpack (int i)
прим. Распаковывает файлы (из конверта), сохраняя длинные имена
FPKAPI int fpk_unpackfile (int i, long p_offs)
ОПИСАНИЕ
Распаковать отдельный файл по смещению в ФПК
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_offs — смещение файла относительно начала ФПК
КОД ВОЗВРАТА
— длина распакованного файла
-1 — ошибка доступа к блоку управления ФПК
14 — файл открыт другим приложением
15 — слишком много открытых файлов
1 — файл не найден ( либо другая ошибка файловой системы )
ЗАМЕЧАНИЯ
ФПК должен быть предварительно открыт функцией fpk_open. Формирование нового имени при конфликте имен.
FPKAPI int fpk_unpackfilel (int i, long p_offs)
см. FPKAPI int fpk_unpackfile (int i, long p_offs)
прим. Распаковывает файл (из конверта), сохраняя длинное имя
FPKAPI int fpk_unpack_byname (int i, char* p_fname, char* p_dir)
ОПИСАНИЕ
Распаковать отдельный файл по его имени в указанный каталог
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_fname — имя файла
p_dir — каталог, куда нужно распаковывать файл
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
14 — файл открыт другим приложением
15 — слишком много открытых файлов
1 — файл не найден (либо другая ошибка файловой системы)
ЗАМЕЧАНИЯ
Функция открывает и закрывает файл ФПК. Поиск осуществляется по короткому имени файла.
FPKAPI int fpk_unpack_bynamel (int i, char* p_fname, char* p_dir)
см. FPKAPI int fpk_unpack_byname (int i, char* p_fname, char* p_dir)
прим. Распаковывает файл (из конверта), сохраняя длинное имя
FPKAPI int fpk_repack (int i)
ОПИСАНИЕ
Перепаковать ФПК (изменить поле .IN)
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
2 — ошибка чтения сигнатуры
3 — неправильная сигнатура
ЗАМЕЧАНИЯ
При перепаковке добавляется ключ «.VD» — версия библиотеки. Во время перепаковки новая копия файла не создается.
FPKAPI int fpk_do_rreport (int i, int p_rcode, char* p_from)
ОПИСАНИЕ
Cоздать отчет от маршрутизатора
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_rcode — код ошибки маршрутизатора
p_from — X.400 адрес отправителя
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Функция не создает файл отчета, для создания файла отчета нужно выполнить функцию fpk_pack.
FPKAPI int fpk_do_report (int i, int p_rcode, int p_ercode, char* p_from)
ОПИСАНИЕ
Создать отчет
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_rcode — код ошибки маршрутизатора
p_ercode — код ошибки программы распаковки
p_from — X.400 адрес отправителя
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Функция не создает файл отчета, для создания файла отчета нужно выполнить функцию fpk_pack.
FPKAPI int fpk_envfromfile (int i, char* p_fenv)
ОПИСАНИЕ
Построение ФПК по значениям полей в файле
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_fenv — файл с информацией для построения ФПК
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_add (int i, char* p_key, char* p_value)
ОПИСАНИЕ
Добавить поле в конверт
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_key — ключ
p_value — значение
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_add_file (int i, const char* file_path, const char* name)
ОПИСАНИЕ
Добавить в конверт файл.
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
file_path — путь к файлу (путь + имя файла)
name — имя файла, с которым он будет добавлен в конверт. 0 – использовать имя из file_path.
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_add_file_buf (int i, const char* name, unsigned long body_size, const unsigned char* body)
ОПИСАНИЕ
Добавить в конверт файл из буфера.
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
name — имя файла, с которым он будет добавлен в конверт.
body_size — размер буфера body.
body — буфер, содержащий тело файла
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int fpk_changekey (int i, char* p_key, char* p_keynew)
ОПИСАНИЕ
Изменить ключ поля конверта
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_key — ключ
p_keynew — новое значение ключа
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Производится поиск первой записи с заданным полем ключа и его замена.
FPKAPI int fpk_find_changekey (int i, char* keynew)
ОПИСАНИЕ
Изменить ключ поля конверта
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_keynew — новое значение ключа
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
-1 — искомая запись не найдена
ЗАМЕЧАНИЯ
Функция работает в контексте поиска функциями env_findfirst и env_findnext, то есть производится замена поля объекта, обнаруженного этими функциями.
FPKAPI int fpk_changevalue (int i, char* p_key, char* p_value)
ОПИСАНИЕ
Изменить значение поля конверта
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_key — ключ
p_value — новое значение
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Производится поиск ПЕРВОЙ записи с заданным полем ключа и замена поля значения.
FPKAPI int fpk_find_changevalue (int i, char* p_value)
ОПИСАНИЕ
Изменить значение поля конверта
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_value — новое значение
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
-1 — искомая запись не найдена
ЗАМЕЧАНИЯ
Функция работает в контексте поиска функциями env_findfirst и env_findnext, то есть производится замена поля объекта, обнаруженного этими функциями.
FPKAPI int fpk_detachunits (int i, char* p_key)
ОПИСАНИЕ
Удаление из ФПК группы полей с заданным ключом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_key — ключ
КОД ВОЗВРАТА
0 — нормальное завершение
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int env_getcount (int i)
ОПИСАНИЕ
Определить количество полей конверта
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
— количество полей конверта
-1 — ошибка доступа к блоку управления ФПК
FPKAPI void* env_findfirst (int i, char* p_obj)
ОПИСАНИЕ
Найти первую запись в конверте с заданным ключом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_obj — значение ключа, по которому производится поиск
КОД ВОЗВРАТА
— адрес поля значения, соответствующего заданному ключу
0 — ошибка доступа к блоку управления ФПК
FPKAPI void* env_findnext (int i)
ОПИСАНИЕ
Найти следующую запись в конверте с заданным ключом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
— адрес поля значения, соответствующего заданному ключу
0 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Поиск следудующей записи производится в контексте функции env_findfirst
FPKAPI int env_findfirst_ind (int i, char* p_obj)
ОПИСАНИЕ
Найти индекс первого поля с заданным ключом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_obj — значение ключа, по которому производится поиск
КОД ВОЗВРАТА
— индекс найденной записи
-1 — ошибка доступа к блоку управления ФПК
FPKAPI int env_findnext_ind (int i)
ОПИСАНИЕ
Найти индекс следующего поля с заданным ключом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
— индекс найденной записи
-1 — ошибка доступа к блоку управления ФПК
FPKAPI void* env_at_key (int i, int p_ind)
ОПИСАНИЕ
Прочесть ключ записи с заданным индексом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — индекс записи конверта
КОД ВОЗВРАТА
— адрес поля ключа, соответствующего заданному ключу
0 — ошибка доступа к блоку управления ФПК
FPKAPI void* env_at_value (int i, int ind)
ОПИСАНИЕ
прочесть значение поля с заданным идексом
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — индекс записи конверта
КОД ВОЗВРАТА
— адрес поля значения, соответствующего заданному ключу
0 — ошибка доступа к блоку управления ФПК
FPKAPI int flist_getcount (int i)
ОПИСАНИЕ
Получить количество файлов вложения
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
КОД ВОЗВРАТА
-количество файлов
-1 — ошибка доступа к блоку управления ФПК
FPKAPI void* flist_at_fname (int i, int p_ind)
ОПИСАНИЕ
Прочесть имя файла из списка файлов по его номеру
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— адрес строки с именем файла
0 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Возвращается короткое имя файла ( 8 символов — имя, 3 — расширение )
СМОТРИ ТАКЖЕ:
fpk_setmode
FPKAPI void* flist_at_fnamel (int i, int p_ind)
ОПИСАНИЕ
Прочесть длинное имя файла из списка файлов по его номеру
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— адрес строки с именем файла
0 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Возвращается длинное имя файла
СМОТРИ ТАКЖЕ:
fpk_setmode
FPKAPI unsigned short flist_at_ftime (int i, int p_ind)
ОПИСАНИЕ
Прочесть время создания файла по его номеру
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— время создания файла
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Время создания файла файла хранится в ФПК в формате MS-DOS
FPKAPI unsigned short flist_at_fdate (int i, int ind)
ОПИСАНИЕ
Прочесть дату файла по его номеру
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— дата создания файла
-1 — ошибка доступа к блоку управления ФПК
ЗАМЕЧАНИЯ
Дата создания файла хранится в ФПК в формате MS-DOS
FPKAPI long flist_at_foffs (int i, int ind)
ОПИСАНИЕ
Определить смещение файла в ФПК по его номеру
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— смещение файла в ФПК
-1 — ошибка доступа к блоку управления ФПК
FPKAPI long flist_at_flen(int i, int ind)
ОПИСАНИЕ
Получить размер файла по индексу.
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
КОД ВОЗВРАТА
— размер файла
-1 — ошибка доступа к блоку управления ФПК
FPKAPI long flist_at_flen_ex(int i, int ind, int code)
ОПИСАНИЕ
Получить размер файла по индексу.
ПАРАМЕТРЫ
i — дескриптор блока управления ФПК
p_ind — номер файла
code — флаг. Возможные значения:
- 0 – оригинальный размер файла
- 1 – размер файла в конверте (при обработке плагинами размер может отличаться от оригинального).
КОД ВОЗВРАТА
— размер файла
-1 — ошибка доступа к блоку управления ФПК
int CopyFiles (char* TargetMask, char* DestMask)
ОПИСАНИЕ
Копирует файлы по маске
ПАРАМЕТРЫ
TargetMask — путь и маска для отбора файлов на копирование
DestMask- путь и маска для полученных файлов
КОД ВОЗВРАТА
Всегда 0
int MoveFiles (char* TargetMask, char* DestDir)
ОПИСАНИЕ
Перемещает файлы по маске
ПАРАМЕТРЫ
TargetMask — путь и маска для отбора файлов на перемещение
DestMask — путь, куда файлы будут перемещены.
КОД ВОЗВРАТА
Всегда 0
int MoveFilesEx (char* TargetMask, char* DestDir, unsigned long ulFlags)
ОПИСАНИЕ
Перемещает файлы по маске
ПАРАМЕТРЫ
TargetMask — путь и маска для отбора файлов на перемещение
DestMask — путь, куда файлы будут перемещены.
ulFlags – 0 – не производить замещение одноименных файлов
1 – замещать одноименные файлы
0x00010000 (MOVEFILE_FORCE_CALK_DIR) – производить разбор DestMask на наличие зарезервированных слов:
- ?YYYY – год, все знаки
- ?YY – год, 2 последних знака
- ?HH – часы, 2 знака
- ?TT – минуты, 2 знака
- ?MM – месяц, 2 знака
- ?DD – день месяца, 2 знака
- ?W – день недели, 1 знак
флаг введен начиная с версии «FpkAPI(v 4.0.1.30a)»
КОД ВОЗВРАТА
Всегда 0
Описание кодов ошибок
Код | Описание |
-3 | Ошибка открытия файла конверта |
3 | В открываемом файле конверта не обнаружена сигнатура |
2 | Нарушена структура конверта |
5 | Нарушена контрольная сумма конверта |
200000 + <sys error> | Ошибка перемещения упаковываемого конверта из каталога .Tmp в каталог упаковки |
4100+errno | Ошибка открытия формируемого файла конверта в .Tmp |
14 | Системная ошибка EACCES при открытия формируемого файла конверта в .Tmp |
16 | Системная ошибка EMFILE при открытия формируемого файла конверта в .Tmp |