Структура СЕАНСА
[Эта структура содержит сведения, необходимые только при использовании функций DeleteExtractedFiles и Extract , которые не поддерживаются. Эта документация предоставляется только в информационных целях.]
Структура SESSION содержит сведения о текущем сеансе.
Синтаксис
typedef struct {
ACTION act;
HFILELIST hflist;
BOOL fAllCabinets;
BOOL fOverwrite;
BOOL fNoLineFeed;
BOOL fSelfExtract;
long cbSelfExtractSize;
long cbSelfExtractSize;
int ahfSelf[cMAX_CAB_FILE_OPEN];
int cErrors;
HFDI hfdi;
ERF erf;
long cFiles;
long cbTotalBytes;
PERROR perr;
SPILLERR se;
long cbSpill;
char achSelf[cbFILE_NAME_MAX];
char achMsg[cbMAX_LINE*2];
char achLine;
char achLocation;
char achFile;
char achDest;
char achCabPath;
BOOL fContinuationCabinet;
BOOL fShowReserveInfo;
BOOL fNextCabCalled;
CABINET acab[2];
char achZap[cbFILE_NAME_MAX];
char achCabinetFile[cbFILE_NAME_MAX];
int cArgv;
char **pArgv;
int fDestructive;
USHORT iCurrentFolder;
} SESSION, *PSESSION;
Члены
-
act
-
действие для выполнения. Этот элемент может быть одним из значений из следующего перечисленного типа.
typedef enum { actBAD, // Invalid action actHELP, // Show help actDEFAULT, // Perform default action based on command line arguments actDIRECTORY, // Force display of cabinet directory actEXTRACT, // Force file extraction actCOPY, // Do single file-to-file copy } ACTION;
-
hflist
-
Дескриптор списка файлов, указанных в командной строке. Этот тип данных объявляется следующим образом:
typedef void *HFILELIST;
-
fAllCabinets
-
Флаг, указывающий, следует ли обрабатывать несколько cab-файлов. Если это значение равно TRUE, обрабатываются шкафы продолжения.
-
fOverwrite
-
Флаг, указывающий, следует ли перезаписывать существующие файлы. Если это значение равно TRUE, существующие файлы перезаписываются.
-
fNoLineFeed
-
Флаг, указывающий, содержит ли последний
printf
вызов символы новой строки (\n
). Если это значение равно TRUE, последнийprintf
вызов не включал символы новой строки. -
fSelfExtract
-
Флаг, указывающий, является ли шкаф саморазвивывляющимся. Если это значение равно TRUE, шкаф выполняется самостоятельное извлечение.
-
cbSelfExtractSize
-
Длина исполняемой части (.exe) самоизвлекаемого шкафа.
-
cbSelfExtractSize
-
Длина cab-части самоизвлекающегося шкафа.
-
ahfSelf
-
Файл обрабатывается в шкаф.
#define cMAX_CAB_FILE_OPEN 2
-
cErrors
-
Количество ошибок, возникших во время сеанса извлечения.
-
hfdi
-
Дескриптор контекста ПИИ. Этот тип данных объявляется следующим образом:
typedef void FAR *HFDI;
-
Erf
-
Структура ошибок ПИИ. См. раздел ERF.
-
cFiles
-
Количество обработанных файлов.
-
cbTotalBytes
-
Общее количество извлеченных байтов.
-
perr
-
Проход через ПИИ.
-
se
-
Ошибка файла переноса. Этот элемент может быть одним из значений из следующего перечисленного типа.
typedef enum { seNONE, // No error seNOT_ENOUGH_MEMORY, // Not enough RAM seCANNOT_CREATE, // Cannot create spill file seNOT_ENOUGH_SPACE, // Not enough space for spill file } SPILLERR;
-
cbSpill
-
Размер запрошенного файла разлива.
-
achSelf
-
Имя исполняемого файла (.exe).
#define cbFILE_NAME_MAX 256
-
achMsg
-
Буфер форматирования сообщений.
#define cbMAX_LINE 256
-
achLine
-
Буфер форматирования строк.
-
achLocation
-
выходной каталог.
-
achFile
-
Текущее имя извлекаемого файла.
-
achDest
-
Имя файла принудительного назначения.
-
achCabPath
-
Путь для поиска cab-файла.
-
fContinuationCabinet
-
Флаг, указывающий, является ли текущий кабинет первым обработанным. Если задано значение TRUE, это не первый обработанный шкаф.
-
fShowReserveInfo
-
Флаг, указывающий, следует ли предоставлять сведения о резервировании. Если задано значение TRUE, информация становится доступной.
-
fNextCabCalled
-
Этот элемент позволяет определить, какие из записей acab использовать, если мы обрабатываем все файлы в наборе кабинетов (fAllCabinet имеет значение TRUE).
-
acab
-
Последние две записи в наборе шкафа. Эта структура определяется следующим образом:
typedef struct { char achCabPath[cbFILE_NAME_MAX]; // Cabinet file path char achCabFilename[cbFILE_NAME_MAX]; // Cabinet file name.ext char achDiskName[cbFILE_NAME_MAX]; // User readable disk label USHORT setID; USHORT iCabinet; } CABINET; typedef CABINET *PCABINET;
-
achZap
-
Префикс, который необходимо удалить из имени файла.
#define cbFILE_NAME_MAX 256
-
achCabinetFile
-
Текущий cab-файл.
#define cbFILE_NAME_MAX 256
-
cArgv
-
Самоизвлекающаяся argc по умолчанию.
-
pArgv
-
Указатель на указатель на самоизвлекаемый argv по умолчанию[].
-
fDestructive
-
Флаг, который минимизирует необходимое место на диске, если задано значение TRUE.
-
iCurrentFolder
-
Если параметр fDestructive имеет значение TRUE, извлеките только текущую папку.
См. также раздел