|
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.
|