1 #ifndef _UNRAR_DLL_
2 #define _UNRAR_DLL_
3
4 #define ERAR_END_ARCHIVE 10
5 #define ERAR_NO_MEMORY 11
6 #define ERAR_BAD_DATA 12
7 #define ERAR_BAD_ARCHIVE 13
8 #define ERAR_UNKNOWN_FORMAT 14
9 #define ERAR_EOPEN 15
10 #define ERAR_ECREATE 16
11 #define ERAR_ECLOSE 17
12 #define ERAR_EREAD 18
13 #define ERAR_EWRITE 19
14 #define ERAR_SMALL_BUF 20
15 #define ERAR_UNKNOWN 21
16 #define ERAR_MISSING_PASSWORD 22
17
18 #define RAR_OM_LIST 0
19 #define RAR_OM_EXTRACT 1
20 #define RAR_OM_LIST_INCSPLIT 2
21
22 #define RAR_SKIP 0
23 #define RAR_TEST 1
24 #define RAR_EXTRACT 2
25
26 #define RAR_VOL_ASK 0
27 #define RAR_VOL_NOTIFY 1
28
29 #define RAR_DLL_VERSION 4
30
31 #ifdef _UNIX
32 #define CALLBACK
33 #define PASCAL
34 #define LONG long
35 #define HANDLE void *
36 #define UINT unsigned int
37 #endif
38
39 struct RARHeaderData
40 {
41 char ArcName[260];
42 char FileName[260];
43 unsigned int Flags;
44 unsigned int PackSize;
45 unsigned int UnpSize;
46 unsigned int HostOS;
47 unsigned int FileCRC;
48 unsigned int FileTime;
49 unsigned int UnpVer;
50 unsigned int Method;
51 unsigned int FileAttr;
52 char *CmtBuf;
53 unsigned int CmtBufSize;
54 unsigned int CmtSize;
55 unsigned int CmtState;
56 };
57
58
59 struct RARHeaderDataEx
60 {
61 char ArcName[1024];
62 wchar_t ArcNameW[1024];
63 char FileName[1024];
64 wchar_t FileNameW[1024];
65 unsigned int Flags;
66 unsigned int PackSize;
67 unsigned int PackSizeHigh;
68 unsigned int UnpSize;
69 unsigned int UnpSizeHigh;
70 unsigned int HostOS;
71 unsigned int FileCRC;
72 unsigned int FileTime;
73 unsigned int UnpVer;
74 unsigned int Method;
75 unsigned int FileAttr;
76 char *CmtBuf;
77 unsigned int CmtBufSize;
78 unsigned int CmtSize;
79 unsigned int CmtState;
80 unsigned int Reserved[1024];
81 };
82
83
84 struct RAROpenArchiveData
85 {
86 char *ArcName;
87 unsigned int OpenMode;
88 unsigned int OpenResult;
89 char *CmtBuf;
90 unsigned int CmtBufSize;
91 unsigned int CmtSize;
92 unsigned int CmtState;
93 };
94
95 struct RAROpenArchiveDataEx
96 {
97 char *ArcName;
98 wchar_t *ArcNameW;
99 unsigned int OpenMode;
100 unsigned int OpenResult;
101 char *CmtBuf;
102 unsigned int CmtBufSize;
103 unsigned int CmtSize;
104 unsigned int CmtState;
105 unsigned int Flags;
106 unsigned int Reserved[32];
107 };
108
109 enum UNRARCALLBACK_MESSAGES {
110 UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD
111 };
112
113 typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2);
114
115 typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
116 typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
117
118 #ifdef __cplusplus
119 extern "C" {
120 #endif
121
122 HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
123 HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
124 int PASCAL RARCloseArchive(HANDLE hArcData);
125 int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
126 int PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
127 int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
128 int PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
129 void PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData);
130 void PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
131 void PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
132 void PASCAL RARSetPassword(HANDLE hArcData,char *Password);
133 int PASCAL RARGetDllVersion();
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif
140
Редактировать