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.
 
 
 
 
 
 

102 lines
2.6 KiB

#ifndef _CDL_H_
#define _CDL_H_
// #define USE_BINDHOST 1
// CDL.h
// Code Downloader header file
//
// Read "class descriptions" first for understanding how the
// code downloader works.
#ifdef __cplusplus
extern "C" {
#endif
/*** ERF - Error structure
*
* This structure returns error information from FCI/FDI. The caller should
* not modify this structure.
*/
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
} ERF; /* erf */
typedef ERF FAR *PERF; /* perf */
// buffer size for downloads in CBSC::m_cbuffer
#define BUFFERMAX 2048
// 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
// FILE extentions we know about
typedef enum {
FILEXTN_NONE,
FILEXTN_UNKNOWN,
FILEXTN_CAB,
FILEXTN_DLL,
FILEXTN_OCX,
FILEXTN_INF,
FILEXTN_EXE,
} FILEXTN;
//
// Master State Information for File Extraction: used by extract.c
//
typedef struct {
UINT cbCabSize;
ERF 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;
#ifdef __cplusplus
}
#endif
#endif // _CDL_H_