SESSION 結構
[只有在使用 不支援的 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;
成員
-
行為
-
要執行的動作。 這個成員可以是下列列舉類型的其中一個值。
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
-
通過 FDI。
-
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
-
要查看封包檔案的路徑。
-
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,則只擷取目前的資料夾。
另請參閱