会话结构

[此结构仅包含使用 DeleteExtractedFilesExtract 函数时所需的信息,这些函数不受支持。 本文档仅供参考。]

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

一个标志,指示是否应处理多个文件柜文件。 如果此值为 TRUE,则处理延续柜。

fOverwrite

指示是否应覆盖现有文件的标志。 如果此值为 TRUE,则覆盖现有文件。

fNoLineFeed

指示最后一 printf 次调用是否具有换行符 (\n) 字符的标志。 如果此值为 TRUE,则最后一次 printf 调用不包含换行符。

fSelfExtract

一个标志,指示文件柜是否正在自提取。 如果此值为 TRUE,则表示文件柜是自解压缩。

cbSelfExtractSize

可执行文件 (.exe 的长度) 自解压柜的一部分。

cbSelfExtractSize

自解压柜的 CAB 部分的长度。

ahfSelf

文件句柄指向文件柜。

#define cMAX_CAB_FILE_OPEN 2

cErrors

提取会话期间遇到的错误计数。

hfdi

FDI 上下文的句柄。 此数据类型声明如下:

typedef void FAR *HFDI;

erf

FDI 错误结构。 请参阅 ERF

cFiles

已处理的文件计数。

cbTotalBytes

提取的字节总数。

perr

通过外国直接投资。

溢出文件错误。 此成员可以是以下枚举类型中的值之一。

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

要查找的内阁文件的路径。

fContinuationCabinet

一个标志,指示当前文件柜是否是第一个处理的文件柜。 如果设置为 TRUE,则不是处理的第一个文件柜。

fShowReserveInfo

指示是否应提供保留信息的标志。 如果设置为 TRUE,则信息可用。

fNextCabCalled

此成员提供一种方法来确定如果我们要处理 (fAllCabinet 设置为 TRUE) 的柜集中的所有文件时要使用的 acab 条目。

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

当前内阁文件。

#define cbFILE_NAME_MAX 256

cArgv

默认的自解压缩 argc。

pArgv

指向默认自解压 argv[] 的指针的指针。

fDestructive

一个标志,用于在设置为 TRUE 时最大程度地减少所需的磁盘空间。

iCurrentFolder

如果 fDestructive 设置为 TRUE,则仅提取当前文件夹。

请参阅

DeleteExtractedFiles

提取