Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

107 lines
2.8 KiB

/* cab_dll.h -- CABINET.DLL high-level APIs */
#ifndef _CAB_DLL_H_INCLUDED
#define _CAB_DLL_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
// File Name List
//
// used as pFilesToExtract to track files in the CAB we need extracted
//
// or a pFileList in PSESSION
//
// We keep track of all files that are in a cabinet
// keeping their names in a list and when the download
// is complete we use this list to delete temp files
struct sFNAME {
LPSTR pszFilename;
struct sFNAME *pNextName;
DWORD status; /* out */
};
typedef struct sFNAME FNAME;
typedef FNAME *PFNAME;
// SFNAME.status: success is 0 or non-zero error code in extraction
#define SFNAME_INIT 1
#define SFNAME_EXTRACTED 0
/*** ERRF - Error structure
*
* This structure returns error information from FCI/FDI. The caller should
* not modify this structure.
*
* Identical to an FCI/FDI ERF, but renamed to avoid collision.
*/
typedef struct {
int erfOper; // FCI/FDI error code -- see FDIERROR_XXX
// and FCIERR_XXX equates for details.
int erfType; // Optional error value filled in by FCI/FDI.
// For FCI, this is usually the C run-time
// *errno* value.
BOOL fError; // TRUE => error present
} ERRF;
//
// Master State Information for File Extraction: used by extract.c
//
typedef struct {
UINT cbCabSize;
ERRF erf;
PFNAME pFileList; // List of Files in CAB
UINT cFiles;
DWORD flags; // flags: see below for list
char achLocation[MAX_PATH]; // Dest Dir
char achFile[MAX_PATH]; // Current File
char achCabPath[MAX_PATH]; // Current Path to cabs
PFNAME pFilesToExtract; // files to extract;null=enumerate only
} SESSION, *PSESSION;
typedef enum {
SESSION_FLAG_NONE = 0x0,
SESSION_FLAG_ENUMERATE = 0x1,
SESSION_FLAG_EXTRACT_ALL = 0x2,
SESSION_FLAG_EXTRACTED_ALL = 0x4
} SESSION_FLAGS;
typedef struct
{
DWORD cbStruct;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwFileVersionMS;
DWORD dwFileVersionLS;
} CABINETDLLVERSIONINFO, *PCABINETDLLVERSIONINFO;
/* export definitions */
typedef LPCSTR WINAPI FN_GETDLLVERSION(VOID);
typedef FN_GETDLLVERSION *PFN_GETDLLVERSION;
typedef VOID WINAPI FN_DLLGETVERSION(PCABINETDLLVERSIONINFO);
typedef FN_DLLGETVERSION *PFN_DLLGETVERSION;
typedef HRESULT WINAPI FN_EXTRACT(PSESSION,LPCSTR);
typedef FN_EXTRACT *PFN_EXTRACT;
typedef VOID WINAPI FN_DELETEEXTRACTEDFILES(PSESSION);
typedef FN_DELETEEXTRACTEDFILES *PFN_DELETEEXTRACTEDFILES;
#ifdef __cplusplus
}
#endif
#endif // _CAB_DLL_H_INCLUDED