Динамические библиотеки

Назначение и структура библиотеки

Динамическая библиотека 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