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