共用方式為


SESSION 結構

[只有在使用 不支援的 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;

成員

行為

要執行的動作。 這個成員可以是下列列舉類型的其中一個值。

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,則只擷取目前的資料夾。

另請參閱

DeleteExtractedFiles

擷取