Merge pull request #4324 from FernetMenta/wasapi
[vuplus_xbmc] / lib / UnrarXLib / unrar.h
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
17 #define RAR_OM_LIST           0
18 #define RAR_OM_EXTRACT        1
19
20 #define RAR_SKIP              0
21 #define RAR_TEST              1
22 #define RAR_EXTRACT           2
23
24 #define RAR_VOL_ASK           0
25 #define RAR_VOL_NOTIFY        1
26
27 #define RAR_DLL_VERSION       4
28
29 struct RARHeaderData
30 {
31   char         ArcName[260];
32   char         FileName[260];
33   unsigned int Flags;
34   unsigned int PackSize;
35   unsigned int UnpSize;
36   unsigned int HostOS;
37   unsigned int FileCRC;
38   unsigned int FileTime;
39   unsigned int UnpVer;
40   unsigned int Method;
41   unsigned int FileAttr;
42   char         *CmtBuf;
43   unsigned int CmtBufSize;
44   unsigned int CmtSize;
45   unsigned int CmtState;
46 };
47
48
49 struct RARHeaderDataEx
50 {
51   char         ArcName[1024];
52   wchar_t      ArcNameW[1024];
53   char         FileName[1024];
54   wchar_t      FileNameW[1024];
55   unsigned int Flags;
56   unsigned int PackSize;
57   unsigned int PackSizeHigh;
58   unsigned int UnpSize;
59   unsigned int UnpSizeHigh;
60   unsigned int HostOS;
61   unsigned int FileCRC;
62   unsigned int FileTime;
63   unsigned int UnpVer;
64   unsigned int Method;
65   unsigned int FileAttr;
66   char         *CmtBuf;
67   unsigned int CmtBufSize;
68   unsigned int CmtSize;
69   unsigned int CmtState;
70   unsigned int Reserved[1024];
71 };
72
73
74 struct RAROpenArchiveData
75 {
76   char         *ArcName;
77   unsigned int OpenMode;
78   unsigned int OpenResult;
79   char         *CmtBuf;
80   unsigned int CmtBufSize;
81   unsigned int CmtSize;
82   unsigned int CmtState;
83 };
84
85 struct RAROpenArchiveDataEx
86 {
87   char         *ArcName;
88   wchar_t      *ArcNameW;
89   unsigned int OpenMode;
90   unsigned int OpenResult;
91   char         *CmtBuf;
92   unsigned int CmtBufSize;
93   unsigned int CmtSize;
94   unsigned int CmtState;
95   unsigned int Flags;
96   unsigned int Reserved[32];
97 };
98
99 enum UNRARCALLBACK_MESSAGES {
100   UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD
101 };
102
103 typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LONG UserData,LONG P1,LONG P2);
104
105 typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
106 typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
107
108 #ifdef __cplusplus
109 extern "C" {
110 #endif
111
112 HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
113 HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
114 int    PASCAL RARCloseArchive(HANDLE hArcData);
115 int    PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
116 int    PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
117 int    PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
118 int    PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
119 void   PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LONG UserData);
120 void   PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
121 void   PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
122 void   PASCAL RARSetPassword(HANDLE hArcData,char *Password);
123 int    PASCAL RARGetDllVersion();
124
125 #ifdef __cplusplus
126 }
127 #endif
128
129 #endif