Поделиться через


Структура СЕАНСА

[Эта структура содержит сведения, необходимые только при использовании функций 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, извлеките только текущую папку.

См. также раздел

DeleteExtractedFiles

Извлечь