-
Notifications
You must be signed in to change notification settings - Fork 1
/
wcxhead.h
170 lines (150 loc) · 6.07 KB
/
wcxhead.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/* Contents of file wcxhead.h */
/* It contains definitions of error codes, flags and callbacks */
/* Error codes returned to calling application */
#define E_END_ARCHIVE 10 /* No more files in archive */
#define E_NO_MEMORY 11 /* Not enough memory */
#define E_BAD_DATA 12 /* Data is bad */
#define E_BAD_ARCHIVE 13 /* CRC error in archive data */
#define E_UNKNOWN_FORMAT 14 /* Archive format unknown */
#define E_EOPEN 15 /* Cannot open existing file */
#define E_ECREATE 16 /* Cannot create file */
#define E_ECLOSE 17 /* Error closing file */
#define E_EREAD 18 /* Error reading from file */
#define E_EWRITE 19 /* Error writing to file */
#define E_SMALL_BUF 20 /* Buffer too small */
#define E_EABORTED 21 /* Function aborted by user */
#define E_NO_FILES 22 /* No files found */
#define E_TOO_MANY_FILES 23 /* Too many files to pack */
#define E_NOT_SUPPORTED 24 /* Function not supported */
/* flags for unpacking */
#define PK_OM_LIST 0
#define PK_OM_EXTRACT 1
/* flags for ProcessFile */
#define PK_SKIP 0 /* Skip this file */
#define PK_TEST 1 /* Test file integrity */
#define PK_EXTRACT 2 /* Extract to disk */
/* Flags passed through ChangeVolProc */
#define PK_VOL_ASK 0 /* Ask user for location of next volume */
#define PK_VOL_NOTIFY 1 /* Notify app that next volume will be unpacked */
/* Flags for packing */
/* For PackFiles */
#define PK_PACK_MOVE_FILES 1 /* Delete original after packing */
#define PK_PACK_SAVE_PATHS 2 /* Save path names of files */
#define PK_PACK_ENCRYPT 4 /* Ask user for password, then encrypt */
/* Returned by GetPackCaps */
#define PK_CAPS_NEW 1 /* Can create new archives */
#define PK_CAPS_MODIFY 2 /* Can modify exisiting archives */
#define PK_CAPS_MULTIPLE 4 /* Archive can contain multiple files */
#define PK_CAPS_DELETE 8 /* Can delete files */
#define PK_CAPS_OPTIONS 16 /* Has options dialog */
#define PK_CAPS_MEMPACK 32 /* Supports packing in memory */
#define PK_CAPS_BY_CONTENT 64 /* Detect archive type by content */
#define PK_CAPS_SEARCHTEXT 128 /* Allow searching for text in archives */
/* created with this plugin */
#define PK_CAPS_HIDE 256 /* Show as normal files (hide packer */
/* icon), open with Ctrl+PgDn, not Enter*/
#define PK_CAPS_ENCRYPT 512 /* Plugin supports PK_PACK_ENCRYPT option*/
/* Flags for packing in memory */
#define MEM_OPTIONS_WANTHEADERS 1 /* Return archive headers with packed data */
/* Errors returned by PackToMem */
#define MEMPACK_OK 0 /* Function call finished OK, but there is more data */
#define MEMPACK_DONE 1 /* Function call finished OK, there is no more data */
#define PK_CRYPT_SAVE_PASSWORD 1
#define PK_CRYPT_LOAD_PASSWORD 2
#define PK_CRYPT_LOAD_PASSWORD_NO_UI 3 // Load password only if master password has already been entered!
#define PK_CRYPT_COPY_PASSWORD 4 // Copy encrypted password to new archive name
#define PK_CRYPT_MOVE_PASSWORD 5 // Move password when renaming an archive
#define PK_CRYPT_DELETE_PASSWORD 6 // Delete password
#define PK_CRYPTOPT_MASTERPASS_SET 1 // The user already has a master password defined
typedef struct {
char ArcName[260];
char FileName[260];
int Flags;
int PackSize;
int UnpSize;
int HostOS;
int FileCRC;
int FileTime;
int UnpVer;
int Method;
int FileAttr;
char* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
} tHeaderData;
typedef struct {
char ArcName[1024];
char FileName[1024];
int Flags;
unsigned int PackSize;
unsigned int PackSizeHigh;
unsigned int UnpSize;
unsigned int UnpSizeHigh;
int HostOS;
int FileCRC;
int FileTime;
int UnpVer;
int Method;
int FileAttr;
char* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
char Reserved[1024];
} tHeaderDataEx;
typedef struct {
WCHAR ArcName[1024];
WCHAR FileName[1024];
int Flags;
unsigned int PackSize;
unsigned int PackSizeHigh;
unsigned int UnpSize;
unsigned int UnpSizeHigh;
int HostOS;
int FileCRC;
int FileTime;
int UnpVer;
int Method;
int FileAttr;
char* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
char Reserved[1024];
} tHeaderDataExW;
typedef struct {
char* ArcName;
int OpenMode;
int OpenResult;
char* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
} tOpenArchiveData;
typedef struct {
WCHAR* ArcName;
int OpenMode;
int OpenResult;
WCHAR* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
} tOpenArchiveDataW;
typedef struct {
int size;
DWORD PluginInterfaceVersionLow;
DWORD PluginInterfaceVersionHi;
char DefaultIniName[MAX_PATH];
} PackDefaultParamStruct;
/* Definition of callback functions called by the DLL
Ask to swap disk for multi-volume archive */
typedef int (__stdcall *tChangeVolProc)(char *ArcName,int Mode);
typedef int (__stdcall *tChangeVolProcW)(WCHAR *ArcName,int Mode);
/* Notify that data is processed - used for progress dialog */
typedef int (__stdcall *tProcessDataProc)(char *FileName,int Size);
typedef int (__stdcall *tProcessDataProcW)(WCHAR *FileName,int Size);
typedef int (__stdcall *tPkCryptProc)(int CryptoNr,int Mode,
char* ArchiveName,char* Password,int maxlen);
typedef int (__stdcall *tPkCryptProcW)(int CryptoNr,int Mode,
WCHAR* ArchiveName,WCHAR* Password,int maxlen);