会话结构
[此结构仅包含使用 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
-
一个标志,指示是否应处理多个文件柜文件。 如果此值为 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,则仅提取当前文件夹。
请参阅