Leaked source code of windows server 2003
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.
|
|
/* 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
|