Subversion Repositories spk

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
121 cycrow 1
#ifndef _UNRAR_DLL_
2
#define _UNRAR_DLL_
3
 
4
#pragma pack(1)
5
 
6
#define ERAR_SUCCESS             0
7
#define ERAR_END_ARCHIVE        10
8
#define ERAR_NO_MEMORY          11
9
#define ERAR_BAD_DATA           12
10
#define ERAR_BAD_ARCHIVE        13
11
#define ERAR_UNKNOWN_FORMAT     14
12
#define ERAR_EOPEN              15
13
#define ERAR_ECREATE            16
14
#define ERAR_ECLOSE             17
15
#define ERAR_EREAD              18
16
#define ERAR_EWRITE             19
17
#define ERAR_SMALL_BUF          20
18
#define ERAR_UNKNOWN            21
19
#define ERAR_MISSING_PASSWORD   22
20
#define ERAR_EREFERENCE         23
21
#define ERAR_BAD_PASSWORD       24
22
 
23
#define RAR_OM_LIST              0
24
#define RAR_OM_EXTRACT           1
25
#define RAR_OM_LIST_INCSPLIT     2
26
 
27
#define RAR_SKIP              0
28
#define RAR_TEST              1
29
#define RAR_EXTRACT           2
30
 
31
#define RAR_VOL_ASK           0
32
#define RAR_VOL_NOTIFY        1
33
 
34
#define RAR_DLL_VERSION       8
35
 
36
#define RAR_HASH_NONE         0
37
#define RAR_HASH_CRC32        1
38
#define RAR_HASH_BLAKE2       2
39
 
40
 
41
#ifdef _UNIX
42
#define CALLBACK
43
#define PASCAL
44
#define LONG long
45
#define HANDLE void *
46
#define LPARAM long
47
#define UINT unsigned int
48
#endif
49
 
50
#define RHDF_SPLITBEFORE 0x01
51
#define RHDF_SPLITAFTER  0x02
52
#define RHDF_ENCRYPTED   0x04
53
#define RHDF_SOLID       0x10
54
#define RHDF_DIRECTORY   0x20
55
 
56
 
57
struct RARHeaderData
58
{
59
  char         ArcName[260];
60
  char         FileName[260];
61
  unsigned int Flags;
62
  unsigned int PackSize;
63
  unsigned int UnpSize;
64
  unsigned int HostOS;
65
  unsigned int FileCRC;
66
  unsigned int FileTime;
67
  unsigned int UnpVer;
68
  unsigned int Method;
69
  unsigned int FileAttr;
70
  char         *CmtBuf;
71
  unsigned int CmtBufSize;
72
  unsigned int CmtSize;
73
  unsigned int CmtState;
74
};
75
 
76
 
77
struct RARHeaderDataEx
78
{
79
  char         ArcName[1024];
80
  wchar_t      ArcNameW[1024];
81
  char         FileName[1024];
82
  wchar_t      FileNameW[1024];
83
  unsigned int Flags;
84
  unsigned int PackSize;
85
  unsigned int PackSizeHigh;
86
  unsigned int UnpSize;
87
  unsigned int UnpSizeHigh;
88
  unsigned int HostOS;
89
  unsigned int FileCRC;
90
  unsigned int FileTime;
91
  unsigned int UnpVer;
92
  unsigned int Method;
93
  unsigned int FileAttr;
94
  char         *CmtBuf;
95
  unsigned int CmtBufSize;
96
  unsigned int CmtSize;
97
  unsigned int CmtState;
98
  unsigned int DictSize;
99
  unsigned int HashType;
100
  char         Hash[32];
101
  unsigned int RedirType;
102
  wchar_t      *RedirName;
103
  unsigned int RedirNameSize;
104
  unsigned int DirTarget;
105
  unsigned int MtimeLow;
106
  unsigned int MtimeHigh;
107
  unsigned int CtimeLow;
108
  unsigned int CtimeHigh;
109
  unsigned int AtimeLow;
110
  unsigned int AtimeHigh;
111
  unsigned int Reserved[988];
112
};
113
 
114
 
115
struct RAROpenArchiveData
116
{
117
  char         *ArcName;
118
  unsigned int OpenMode;
119
  unsigned int OpenResult;
120
  char         *CmtBuf;
121
  unsigned int CmtBufSize;
122
  unsigned int CmtSize;
123
  unsigned int CmtState;
124
};
125
 
126
typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2);
127
 
128
#define ROADF_VOLUME       0x0001
129
#define ROADF_COMMENT      0x0002
130
#define ROADF_LOCK         0x0004
131
#define ROADF_SOLID        0x0008
132
#define ROADF_NEWNUMBERING 0x0010
133
#define ROADF_SIGNED       0x0020
134
#define ROADF_RECOVERY     0x0040
135
#define ROADF_ENCHEADERS   0x0080
136
#define ROADF_FIRSTVOLUME  0x0100
137
 
138
struct RAROpenArchiveDataEx
139
{
140
  char         *ArcName;
141
  wchar_t      *ArcNameW;
142
  unsigned int  OpenMode;
143
  unsigned int  OpenResult;
144
  char         *CmtBuf;
145
  unsigned int  CmtBufSize;
146
  unsigned int  CmtSize;
147
  unsigned int  CmtState;
148
  unsigned int  Flags;
149
  UNRARCALLBACK Callback;
150
  LPARAM        UserData;
151
  unsigned int  Reserved[28];
152
};
153
 
154
enum UNRARCALLBACK_MESSAGES {
155
  UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD,UCM_CHANGEVOLUMEW,
156
  UCM_NEEDPASSWORDW
157
};
158
 
159
typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
160
typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
161
 
162
#ifdef __cplusplus
163
extern "C" {
164
#endif
165
 
166
HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
167
HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
168
int    PASCAL RARCloseArchive(HANDLE hArcData);
169
int    PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
170
int    PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
171
int    PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
172
int    PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
173
void   PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData);
174
void   PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
175
void   PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
176
void   PASCAL RARSetPassword(HANDLE hArcData,char *Password);
177
int    PASCAL RARGetDllVersion();
178
 
179
#ifdef __cplusplus
180
}
181
#endif
182
 
183
#pragma pack()
184
 
185
#endif