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