00001
00002
00003
00004
00005 #ifndef _UNRAR_DLL_
00006 #define _UNRAR_DLL_
00007
00008 #define ERAR_END_ARCHIVE 10
00009 #define ERAR_NO_MEMORY 11
00010 #define ERAR_BAD_DATA 12
00011 #define ERAR_BAD_ARCHIVE 13
00012 #define ERAR_UNKNOWN_FORMAT 14
00013 #define ERAR_EOPEN 15
00014 #define ERAR_ECREATE 16
00015 #define ERAR_ECLOSE 17
00016 #define ERAR_EREAD 18
00017 #define ERAR_EWRITE 19
00018 #define ERAR_SMALL_BUF 20
00019 #define ERAR_UNKNOWN 21
00020
00021 #define RAR_OM_LIST 0
00022 #define RAR_OM_EXTRACT 1
00023
00024 #define RAR_SKIP 0
00025 #define RAR_TEST 1
00026 #define RAR_EXTRACT 2
00027
00028 #define RAR_VOL_ASK 0
00029 #define RAR_VOL_NOTIFY 1
00030
00031 #define RAR_DLL_VERSION 4
00032
00033 struct RARHeaderData
00034 {
00035 char ArcName[260];
00036 char FileName[260];
00037 unsigned int Flags;
00038 unsigned int PackSize;
00039 unsigned int UnpSize;
00040 unsigned int HostOS;
00041 unsigned int FileCRC;
00042 unsigned int FileTime;
00043 unsigned int UnpVer;
00044 unsigned int Method;
00045 unsigned int FileAttr;
00046 char *CmtBuf;
00047 unsigned int CmtBufSize;
00048 unsigned int CmtSize;
00049 unsigned int CmtState;
00050 };
00051
00052 struct RARHeaderDataEx
00053 {
00054 char ArcName[1024];
00055 wchar_t ArcNameW[1024];
00056 char FileName[1024];
00057 wchar_t FileNameW[1024];
00058 unsigned int Flags;
00059 unsigned int PackSize;
00060 unsigned int PackSizeHigh;
00061 unsigned int UnpSize;
00062 unsigned int UnpSizeHigh;
00063 unsigned int HostOS;
00064 unsigned int FileCRC;
00065 unsigned int FileTime;
00066 unsigned int UnpVer;
00067 unsigned int Method;
00068 unsigned int FileAttr;
00069 char *CmtBuf;
00070 unsigned int CmtBufSize;
00071 unsigned int CmtSize;
00072 unsigned int CmtState;
00073 unsigned int Reserved[1024];
00074 };
00075
00076 struct RAROpenArchiveData
00077 {
00078 char *ArcName;
00079 unsigned int OpenMode;
00080 unsigned int OpenResult;
00081 char *CmtBuf;
00082 unsigned int CmtBufSize;
00083 unsigned int CmtSize;
00084 unsigned int CmtState;
00085 };
00086
00087 struct RAROpenArchiveDataEx
00088 {
00089 char *ArcName;
00090 wchar_t *ArcNameW;
00091 unsigned int OpenMode;
00092 unsigned int OpenResult;
00093 char *CmtBuf;
00094 unsigned int CmtBufSize;
00095 unsigned int CmtSize;
00096 unsigned int CmtState;
00097 unsigned int Flags;
00098 unsigned int Reserved[32];
00099 };
00100
00101 enum UNRARCALLBACK_MESSAGES {
00102 UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD
00103 };
00104
00105 typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LONG UserData,LONG P1,LONG P2);
00106
00107 typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
00108 typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
00109
00110 #ifdef __cplusplus
00111 extern "C" {
00112 #endif
00113
00114 HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
00115 HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
00116 int PASCAL RARCloseArchive(HANDLE hArcData);
00117 int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
00118 int PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
00119 int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
00120 int PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
00121 void PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LONG UserData);
00122 void PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
00123 void PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
00124 void PASCAL RARSetPassword(HANDLE hArcData,char *Password);
00125 int PASCAL RARGetDllVersion();
00126
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130
00131 #endif