1 #ifndef _UNRAR_DLL_ 2 #define _UNRAR_DLL_ 3 4 #pragma pack(push, 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 #define ROADOF_KEEPBROKEN 0x0001 139 140 struct RAROpenArchiveDataEx 141 { 142 char *ArcName; 143 wchar_t *ArcNameW; 144 unsigned int OpenMode; 145 unsigned int OpenResult; 146 char *CmtBuf; 147 unsigned int CmtBufSize; 148 unsigned int CmtSize; 149 unsigned int CmtState; 150 unsigned int Flags; 151 UNRARCALLBACK Callback; 152 LPARAM UserData; 153 unsigned int OpFlags; 154 wchar_t *CmtBufW; 155 unsigned int Reserved[25]; 156 }; 157 158 enum UNRARCALLBACK_MESSAGES { 159 UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD,UCM_CHANGEVOLUMEW, 160 UCM_NEEDPASSWORDW 161 }; 162 163 typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode); 164 typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size); 165 166 #ifdef __cplusplus 167 extern "C" { 168 #endif 169 170 HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData); 171 HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData); 172 int PASCAL RARCloseArchive(HANDLE hArcData); 173 int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData); 174 int PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData); 175 int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName); 176 int PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName); 177 void PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData); 178 void PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc); 179 void PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc); 180 void PASCAL RARSetPassword(HANDLE hArcData,char *Password); 181 int PASCAL RARGetDllVersion(); 182 183 #ifdef __cplusplus 184 } 185 #endif 186 187 #pragma pack(pop) 188 189 #endif 190