Программы, плагины, статьи от Моторокера

Новости
Статьи
Программы
Ссылки
Автор

Рекомендации по написанию архиваторных плагинов для Total Commander

tHeaderDataEx – структура для заголовка

tHeaderDataEx – структура, которая используется в ReaderHeader.

typedef struct {
    char ArcName[1024];
    char FileName[1024];
    int Flags;
    unsigned int PackSize;
    unsigned int PackSizeHigh;
    unsigned int UnpSize;
    unsigned int UnpSizeHigh;
    int HostOS;
    int FileCRC;
    int FileTime;
    int UnpVer;
    int Method;
    int FileAttr;
    char* CmtBuf;
    int CmtBufSize;
    int CmtSize;
    int CmtState;
    char Reserved[1024];
 } tHeaderData;
THeaderData=packed record
    ArcName: array[0..1023] of char;
    FileName: array[0..1023] of char;
    Flags: longint;
    PackSize,
    PackSizeHigh,
    UnpSize,
    UnpSizeHigh: word;
    HostOS,
    FileCRC,
    FileTime,
    UnpVer,
    Method,
    FileAttr: longint;
    CmtBuf: PChar;
    CmtBufSize,
    CmtSize,
    CmtState: longint;
    Reserved: array[0..1023] of char;
  end;

Описание

ArcName, FileName, PackSize, UnpSize содержат соответственно имя файла архива, имя файла в архиве, размер упакованного файла и размер распакованного файла. PackSizeHigh, UnpSizeHigh содержат старшие 32 бита 64 битного числа. Присвойте 0, если файл меньше 4 Gb.

Новое! Total Commander оповещается, что файл зашифрован, с помощью поля Flags структуры tHeaderData(Ex). Установите его в 8, если файл зашифрован, и добавьте 0×12345600 для подтверждения корректности поля Flags.

HostOS добавлен только для совместимости с unrar.dll, должен быть присвоен ноль.

FileCRC – это 32-битная контрольная сумма файла CRC (cyclic redundancy check). Если не поддерживается, присвойте ноль.

Значения Cmt* могут быть использованы для передачи комментария к файлу. Пока не используются в Total Commander, поэтому можете присвоить ноль.

FileAttr можно присвоить любую комбинацию следующих значений:

ЗначениеОписание
0x1Файл только для чтения
0x2Скрытый файл
0x4Системный файл
0x8Метка тома Volume ID file
0x10Каталог
0x20Архивный файл
0x3FЛюбой файл

FileTime содержит дату и время последнего изменения файла. Используйте следующий алгоритм, чтобы присвоить значение:

FileTime = (year - 1980) << 25 | month << 21 | day << 16 | hour << 11 | minute << 5 | second/2;

FileTime:= (year - 1980) shl 25 | month shl 21 | day shl 16 | hour shl 11 | minute shl 5 | second div 2;

Убедитесь, что:

year – год является числом из четырёх цифр со значением между 1980 и 2100

month – месяц является числом со значением между 1 и 12

hour часы в 24-часовом формате

Reserved может быть использовано в следующих версиях для дополнительных данных – вы ДОЛЖНЫ установить значение 0, чтобы избежать проблем в следующих версиях Total Commander.


© 2006–2011 Моторокер Плагины для Total Commander